Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Cachowanie obiektów
ziupexx
post 16.11.2013, 21:13:05
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 16.11.2013

Ostrzeżenie: (0%)
-----


Dziwna sprawa, otwóż próbuje zapisać w cache przygotowany obiekt do pracy w raz z innymi obiekatmi w swoim wnętrzu, jednak czas jakji jest potrzebny na pobranie gotowego obiektu jest dłuższy niż czas utworzenia za każdym razem nowych obiektów, skrypt poniżej

JEST WOLNIEJSZY

$time_start = microtime(true);

$cache = new \Memcache;
$cache->connect('localhost', 11211) or die('Could not connect to memcache serwer');

for($i=0;$i <= 90;$i++){
$system = $cache->get('system.class');
if (!$system) {

$object = new system\core\System('system/core/config/configuration.ini');
$cache->set('system.class', $object, MEMCACHE_COMPRESSED, 30);
$system = $cache->get('system.class');


}
$system->start();
}

$time_end = microtime(true);

echo $time = $time_end - $time_start;

OD TEGO SKRYPTU

$time_start = microtime(true);

for($i=0;$i <= 90;$i++){

$system = new system\core\System('system/core/config/configuration.ini');
$system->start();

}

$time_end = microtime(true);

echo $time = $time_end - $time_start;


Może ktoś wytłumaczyć dlaczego?
Go to the top of the page
+Quote Post
Crozin
post 16.11.2013, 22:42:53
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Ciężko odpowiedzieć nie mając pojęcia co robi konstruktor oraz metoda start() klasy system\core\System.
Go to the top of the page
+Quote Post
Fluke
post 17.11.2013, 13:53:53
Post #3





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Choćby nawet plik(dokładniej, ścieżkę do pliku) jaki przesyłasz do konstruktora. Korzystałem z plików o rozszerzeniu .ini ale szybko przestawiłem się na .php bo skrypt wykonywał się o ~0.3 dłużej.
Dodatkowo pytanie jak zbudowana jest twoja klasa \system\core\System.
Go to the top of the page
+Quote Post
em1X
post 20.11.2013, 22:33:53
Post #4





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

Ostrzeżenie: (0%)
-----


No cóż, przecież obiekt nie jest zapisywany "cały" do cache'u, tylko najpierw jest serializowany, następnie w pamięci ląduje jego wersja tekstowa. Podczas wyciągania danych, obiekt jest deserializowany, PHP tworzy obiekt (zupełnie tak jak Ty go tworzysz), PHP ponownie przypisuje dane (tak jak Ty to robisz). Dziwisz się, że nic na tym nie zyskujesz? Nie do tego memcache służy.

Do czego ja bym memcache wykorzystał? Mam 30 tabel, na których należy wykonać kilkadziesiąt joinów, dane te potem muszą być jeszcze obrobione przez PHP. Taką operację muszę powtórzyć przy każdym dodaniu rekordu. Zamiast robić to za każdym razem, robię raz i zapisuję do pamięci. Nie bawię się w jakieś zapisywanie obiektów nie wiadomo po co smile.gif

Ten post edytował em1X 20.11.2013, 22:37:53


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 3.08.2025 - 07:19