![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 505 Pomógł: 0 Dołączył: 8.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam ponownie,
Biorąc pod uwagę opinie i zalecenia forumowiczów , powstała pierwsza stabilna i oficjalna wersja klasy Chameleon do obsługi szablonów. Na wstęp drobne porównanie z klasą Smarty. Test symulujący całkowite przeładowanie strony z wykorzystanie cache dyskowego. Smarty korzysta ze skompilowanych szablonów , Chameleon z mapy tagów : Smarty : 500 iteracji (20 zmiennych) = 0.3475s Smarty : 500 iteracji (10 zmiennych) = 0.3067s Smarty : 500 iteracji (5 zmiennych) = 0.2965s Chameleon : 500 iteracji (20 zmiennych) = 0.2336s Chameleon : 500 iteracji (10 zmiennych) = 0.2095s Chameleon : 500 iteracji (5 zmiennych) = 0.2105s Kolejny test symulujacy kilkakrotne parsowanie szablonu podczas jednego wywolania strony, sytuacja ma miejsce gdy parsujemy kilkakrotnie ten sam szablon (np. formatka newsa) z zaladowana mapa tagow w pamieci. Oto wyniki : Smarty : 500 powtórzeń (20 zmiennych) = 0.2462s Chameleon : 500 powtórzeń (20 zmiennych) = 0.0981s ---------------- Co potrafi Chameleon : # Cache tagow na dysku twardym # Zmienne typu : {zmienna} {test} # Zmienne tablicowe jednowymiarowe : {tablica[0]} {tablica[1]} # Zagniezdzone IFy dowolnej glebokosci z obsluga negacji oraz ELSE (Narazie warunek sprawdzany jest logicznie tylko czy zmienna jest ustawiona) # Petle szablonowe # Podswietlanie blednych tagow # Proste operacje matematyczne ----------------------------------------------------------
Przyklad 1 : Zmienne zwykle Szablon : http://www.vertis.com.pl/chameleon/example...es/example1.tpl Demo : http://www.vertis.com.pl/chameleon/example...es/example2.php --
Przyklad 3 : Zmienne tablicowe Szablon : http://www.vertis.com.pl/chameleon/example...es/example3.tpl Demo : http://www.vertis.com.pl/chameleon/example...es/example3.php --
Przyklad 6 : Warunki Szablon : http://www.vertis.com.pl/chameleon/example...es/example6.tpl Demo : http://www.vertis.com.pl/chameleon/example...es/example6.php --
Przyklad 7 : Petle w szablonie Szablon : http://www.vertis.com.pl/chameleon/example...es/example7.tpl Demo : http://www.vertis.com.pl/chameleon/example...es/example7.php -- Klasę w wersji 1.0.0 można pobrać z http://www.vertis.com.pl/ Ten post edytował Bastion 18.06.2006, 22:58:47 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Hmm.. mialem chwile wolnego od sesji to sobie porownalem to u siebie i wyszly mi "troche" inne wyniki. Nie robilem testu samego podmieniania zmiennych, bo to bez sensu, wzialem sie od razu za szablon z petlami. Roznica polega na tym, ze szablon mial ~11KB a nie niecale 2KB jak u Ciebie i to spowodowalo, ze tabela sie jakby obrocila: est.png' target='_blank
Byc moze to tylko wina kompa, na ktorym testowalem (jestem w domu, a tu mam dostep tylko do starego poczciwego P3 450), aczkolwiek reszta wynikow raczej pokrywa sie wynikami robionymi na moim kompie w akademiku, wiec moze to byc kwestia tego, ze przy wiekszych plikach podmiana "w locie" (bez kompilacji szablonow do kodu posredniego jak np. w Smarty) po prostu juz wysiada... Jutro wieczorem powinienem byc z powrotem na swojej maszynie, wiec sprawdze to na bardziej dzisiejszym sprzecie, a w miedzyczasie Ty mozesz sprawdzic u siebie. Druga sprawa.. przegladnalem po lepkach kod tej klasy i widzialem, ze w wielu miejscach uzywasz petli typu while (list($key, $value) = each($tab)) Jest to chyba najmniej wydajny sposob iterowania po tablicy asocjacyjnej w php jaki widzialem. Generalnie ze sposobow iteracji po tablicach do tych podstawowych zaliczamy nastepujace: 1) isset: for($i = 0; isset($loop[$i]); $i++) 2) size: for ($i = 0, $n = count($loop); $i < $n; $i++) 3) while: reset($loop); while (list($k, $v) = each($loop)) 4) foreach: foreach ($loop as $k => $v) 5) count for ($i = 0; $i < count($loop); $i++) 6) array_keys: $keys = array_keys($loop); for ($i = 0, $n = count($keys); $i < $n; $i++) Nie wszystkie nadaja sie do tablic asocjacyjnych rzecz jasna.. ale nawet z posrod 3), 4) i 6) to wlasnie 3) jest najwolniejszy. Kiedys robilem pomiary z ciekawosci jak to sie skaluje, wiec moge je zaprezentowac: est.png' target='_blank Jak widac foreach wcale nie jest taki zly jakby sie moglo wydawac, wiec nie ma co go na sile unikac. Nie bedzie to rewolucja jak wprowadzisz u siebie, ale jakas roznica na korzysc powinna sie pojawic.. pytanie tylko, na ktorym miejscu po przecinku (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 18:35 |