Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [klasa] Chameleon 1.9.1
Forum PHP.pl > Inne > Oceny
Stron: 1, 2, 3
FiDO
Cytat
Zależy pod jakim katem testowac, wyniki beda rozne tongue.gif

Duzo w tym przypadku zalezy od przygotowania odpowiedniego szablonu wejsciowego. Ciagle jednak nie moge przemoc sie, zeby zrobic jakis porzadniejszy szablon testowy (lacznie z modyfikatorami itp.).

Cytat
Fido moze wezmiesz do tstow opt z svn w wersji rc2 i zobaczymy, bo nie wiem z jakiej kozystasz.

Wlasnie na RC2 testowalem. Akurat to i Chameleona sciagalem wczoraj, bo ich nie mialem.. tylko reszta jest troche starsza.

Cytat
A tak btw dyskusja zaowocowala planami malych zmian w opt:
[...]
Napewno przyczyni sie to do poprawy smile.gif

Hmm.. sam tez musze sie przyznac, ze zanim zaczalem pisac swoj system to kukalem troche do Smarty. Nie rozbieralem go jednak na czesci pierwsze, bo jest troche za duzo kodu na takie cos.. zrobilem tylko analize po lepkach co i jak mniej wiecej dziala.
Bastion
Fiu fiu smile.gif Dziekuje za ciekawa opinie , chcialem zauwazyc ze Chameleon to bardzo mlody projekt i wciaz bede nad nim pracowal smile.gif Cos chyba wydaje mi sie aby zrobic sobie kilka plikow testowych w roznych wariantach i szukac slabych ponktow Chameleona . Do wersji 1.2.0 powinno sie duzo zmienic smile.gif

-- added :

Bardzo dziwna sprawa, sprawdzilem też na malym szablonie 1300B ( http://www.vertis.com.pl/trash/template.tpl ) i wyniki sa jakby inne :

Smarty 2.6.12 : 5000 iteracji (10 zmiennych) : 2.1057s :: 100.00%
Smarty 2.6.12 : 5000 powtórzeń : 1.6233s :: 100.00%
Chameleon CVS : 5000 iteracji (10 zmiennych) : 1.6662s :: 126.38%
Chameleon CVS : 5000 powtórzeń: 0.7706s :: 210.65%

Platforma testowa : Pentium 4 HT 2800 MHz / 512MB

Jak testowalem :

  1. <?php
  2.  
  3. include_once('chameleon/class.chameleon.php');
  4. include_once('smarty/Smarty.class.php');
  5.  
  6. define('CHAMELEON_DEBUG', 0);
  7.  
  8. function get_microtime()
  9. {
  10. list($usec, $sec) = explode(" ", microtime());
  11. return ((float)$usec + (float)$sec);
  12. }
  13.  
  14.  
  15. function smarty_tpl_1_1()
  16. {
  17. $tpl = new Smarty;
  18. $tpl->template_dir = './smarty/templates';
  19. $tpl->compile_dir = './smarty/templates_c';
  20. $tpl->compile_check = false;
  21.  
  22. for ($i = 0; $i < 10; $i++)
  23. {
  24. $tpl->assign("var$i", 'blah');
  25. }
  26.  
  27. $tpl->fetch('template.tpl');
  28. }
  29.  
  30. function smarty_tpl_2_1($j)
  31. {
  32. $tpl = new Smarty;
  33. $tpl->template_dir = './smarty/templates';
  34. $tpl->compile_dir = './smarty/templates_c';
  35. $tpl->compile_check = false;
  36.  
  37. for ($i = 0; $i < 10; $i++)
  38. {
  39. $tpl->assign("var$i", 'blah');
  40. }
  41.  
  42. for ($i=0; $i<$j; $i++)
  43. {
  44. $tpl->fetch('template.tpl');
  45. }
  46. }
  47.  
  48. // - CHAMELEON -
  49. function chameleon_tpl_1_1()
  50. {
  51. $tpl = new Chameleon;
  52. $tpl->template_dir = './chameleon/templates';
  53. $tpl->tags_dir = './chameleon/templates_tags';
  54. $tpl->load('template.tpl');
  55.  
  56. for ($i = 0; $i < 10; $i++)
  57. {
  58. $tpl->setVar("var$i", 'blah');
  59. }
  60.  
  61. $tpl->parse();
  62. }
  63.  
  64. function chameleon_tpl_2_1($j)
  65. {
  66. $tpl = new Chameleon;
  67. $tpl->template_dir = './chameleon/templates';
  68. $tpl->tags_dir = './chameleon/templates_tags';
  69. $tpl->load('template.tpl');
  70.  
  71. for ($i = 0; $i < 10; $i++)
  72. {
  73. $tpl->setVar("var$i", 'blah');
  74. }
  75.  
  76. for ($i = 0; $i < $j; $i++)
  77. {
  78. $tpl->parse();
  79. }
  80. }
  81.  
  82.  
  83. // -----------------------------------------
  84.  
  85.  
  86. $iter = 5000;
  87.  
  88. $start = get_microtime();
  89. for ($i=0; $i<$iter; $i++)
  90. {
  91.  smarty_tpl_1_1();
  92. }
  93. $end = get_microtime();
  94. $results['Smarty 2.6.12']['iter10'] = number_format($end-$start,4);
  95.  
  96. $start = get_microtime();
  97. smarty_tpl_2_1($iter);
  98. $end = get_microtime();
  99. $results['Smarty 2.6.12']['repl10'] = number_format($end-$start,4);
  100.  
  101. // ----------------------------------------------
  102.  
  103. $start = get_microtime();
  104. for ($i=0; $i<$iter; $i++)
  105. {
  106.  chameleon_tpl_1_1();
  107. }
  108. $end = get_microtime();
  109. $results['Chameleon CVS']['iter10'] = number_format($end-$start,4);
  110.  
  111. $start = get_microtime();
  112. chameleon_tpl_2_1($iter);
  113. $end = get_microtime();
  114. $results['Chameleon CVS']['repl10'] = number_format($end-$start,4);
  115.  
  116. // ----------------------------------------------
  117.  
  118. $names['iter20'] = 'iteracji (20 zmiennych)';
  119. $names['iter10'] = 'iteracji (10 zmiennych)';
  120. $names['iter05'] = 'iteracji (5 zmiennych)';
  121. $names['repl20'] = 'powtorzen (20 zmiennych)';
  122.  
  123. while(list($version,$res) = each ($results))
  124. {
  125. while(list($test, $result) = each ($res))
  126. {
  127. if (empty($first[$test]))
  128. {
  129. $first[$test] = $result;
  130. }
  131.  
  132. $percent = number_format(($first[$test] / $result)*100,2);
  133.  
  134. $name = $names[$test];
  135.  
  136. print($version.' : '.$iter.' '.$name.' : '.$result.'s :: '.$percent."%<br />");
  137. }
  138. print '<hr />';
  139. }
  140. ?>


Mozesz podeslac mi swoj szablon na jakim robiles testy ?
splatch
Do takich testów najbardziej nadaje się apache benchmark. Mierzenie takich rzeczy z poziomu php i to w takiej kolejności jest niezbyt dobrym rozwiązaniem. Jeśli nie masz tego programu - http://img.dywicki.pl/ab.exe - a instrukcja użycia - http://httpd.apache.org/docs/2.0/programs/ab.html
Sprawdź jak ma się to przy requestach a nie przy iteracjach. smile.gif
Bastion
ab mam, jest standardowo w mojej dystrybucji. umowmy sie tak ze zrobie testy za pomoca ab kolejnej wersji chameleona - przeprawdze kilka testow - osobno zmienne, waruki, petle, tablice - oraz test calosciowy szablonow "z zycia wzietych" .

btw. nie sadzilem ze chameleon pomimo ze posiada spore braki wywola takie poruszenie , w zalozeniu ma to byc moj wlasny system szablonow - a nie jako powazna konkurencja OPT czy Smarty - trzeba spojzec prawdzie w oczy - Chameleon to maly pryszcz w porownaniu z w/w. Nie mniej wcale nie zamierzam zaprzestac prac rozwojowo-optymalizujacych - pomimo lepszych rozwiaza w kolo smile.gif

--edit-- nie wytrzymalem i musialem zrobic maly test , potem zamieszcze rozne testy roznych wariantow dla Chameleona 1.2.0

na szybkensa zrobilem test AB :
wyniki, szablon i skrypty poddane testowi tutaj :

http://www.vertis.com.pl/ab/
sa tu dwa katalogi - jeden dla szablonu 10kB a drugi dla 1kB
Denver
No cóż, muszę przyznać, że jestem pod wrażeniem Twoich wyników w porównaniu do Smarty i OPT. Jednak jeśli testy, które przeprowadził FiDO też nie kłamią, to na pewno musisz popracować jeszcze nad większymi plikami i ich szybszym parsowaniem. Niemniej jednak - keep up this good work, man!
Bastion
Denver, o to chodzi ze FiDo tez przestawil szablon ~10kB
Jedyna roznica to ze on testowal chyba 1.1.0 a ja CVS , ale zmian w CVS wydajnosciowych jest tylko +5% z porowanienim z 1.1.0
FiDO
No to jestem juz u siebie... testy prawie pokrywaja sie z wynikami z domu. Troszke zmniejszyla sie dysproporcja do Smarty, ale to nadal nie to co tygryski lubia najbardziej smile.gif
Jest jeszcze jedna roznica poza szablonem.. ja testuje na windowsie, a z tego co widzialem u Ciebie jest jakis Unix/Linux, pewnie to tez ma jakis wplyw na wyniki.

Powinienem teraz robic co innego, ale tez mnie ten temat gryzie, wiec postaram sie zrobic jeszcze jakies testy z pomoca AB. Stay tuned ;]
Bastion
Fido : hum faktycznie roznica wychodzi tylko w systemach - wstrzymaj sie z tym testem do 1.2.0 - wtedy zrobimy dokladniejsze porownania. Dobrze by bylo abysmy opracowali jakis jednolity standardowy szablon testowy

--

@fido : a zobaczy czy tworzy sie plik cache smile.gif
FiDO
No przydalby sie... wg mnie powinno to byc ok 10KB tekstu (i wersja powiedzmy 2KB, zeby mozna zobaczyc jak sie to skaluje na roznych systemach), a w nim jakies petelki po tablicach, kilka warunkow i troche zwyklych zmiennych, czyli taki w miare standardowy scenariusz.

Plik cache (znaczy masz na mysli te z katalogu tags_dir ?) sie tworzy, tez sadzilem, ze to moze byc to, wiec sprawdzilem na poczatku.

~edit: to nie wina windowsa.. wrzucilem na chwile na serwer unixowy i jest to samo.
Bastion
ok, to ja jutro zapodam dwie propozycje takich TPLi jeden 10kB a drugi 5kB.
obaczysz - jesli zaakceptujesz to uznamy to za _standard_

co do windowsa to tak mnie zaciekawiles ze chyba go zainstaluje i sprawdze tez
hwao
Proponuje cos takiego:
5 - zwyklych zmiennych (np w tagach <meta>)
7 - modyfikatorów (np data, strtouper, strtolower, 1 litera z duzej )
1 - petla z sama tablica wielowymiarowa (10 loopów, i w niej 15 zmiennych (powiecmy ze to takie standartowe newsy) w tym modyfikator daty, u powiekszenia pierwszej litery (tytul) + kolorowanie tych wierszy na przemian
1 - petla z obietkami, w tablicy 10 obiektów, kazdy obiekt powiedzmy ma 7 metod zwracajacych cos, i wrzuca sie to do szablonu, +modyfikator daty. z cycle

Jak tak patrze srednio to powinno byc kolo 10kb teksty w nich, z tym ze wiekszosc znajduje sie w PETLACH smile.gif

no i polecil bym jeszcze 2 include wpierw naglowek strony (header, czyli od <html> do <body>) i stopke (czyli stopke strony)

Chyba to by było kompletne, chyba ze oczyms zapomnialem smile.gif

Chcialem przewidziec jakis czesto spotykany scenariusz smile.gif

Ps.

Dodanie jakiegos warunka w petli wyswietlajacej np sprawdzenie czy dany text da sie drukowac czyli prosty if
Kod
{if print == true}
  ... mozna drukowac ...
{/if}


autor:
Kod
{if empty( autor )} // cos takiego (sprawdza czy cos jest w zminnej
autor: {autor}
{else}
autor: anonim
{/if}

oczywiscie w petli
Bastion
@hwao:

wlasnie robie szablony testowe kazdy ma rozmiar ~10kB .

1) zwykle zmienne
2) zmienne tablicowe

3) loopy, listy
4) warunki
5) szablon z prawdziwego zdarzenia ( o ktorym wspomniales )


1,2 juz zrobiona : pl/' target='_blank

--added

Znalazlem slabe ogniwo ktore spowodowalo drastyczny spadek (9x) wydajnosci - tablice i loop - dzieki FiDO smile.gif
FiDO
@hwao: wlasnie o czyms takim myslalem :]

Problem polega na tym, ze czesci z tych ficzerow Chameleon jeszcze nie obsluguje, ale to powinien byc bodziec dla autora smile.gif

Za chwile przedstawie wyniki z Apache Benchmark, niech no tylko skoncze sniadanko ;]
Bastion
smile.gif wlasnie hwao dodal pare pozycji do tapety smile.gif, a ja wlasnie zrobilem test tylko na chameleonie i same operowanie na zmiennej tablicowej zajmuje mu 2x wiecej czasu niz zwykle zmiennej. smile.gif
FiDO
No i wlasnie to jest to o czym pisalem... petelki smile.gif
Moze jak mnie poniesie to zrobie zaraz jakis szablonik mniej wiecej dopasowany do tego co podal hwao.
Tymczasem wyniki z AB z tego samego szablonu, na ktorym testowalem wczesniej przedstawiaja sie nastepujaco:
Kod
Testing test_chameleon.php ...
Requests per second:    76.19 [#/sec] (mean)

Testing test_nemesis.php ...
Requests per second:    172.97 [#/sec] (mean)

Testing test_opt.php ...
Requests per second:    84.21 [#/sec] (mean)

Testing test_opt_lite.php ...
Requests per second:    116.36 [#/sec] (mean)

Testing test_savant.php ...
Requests per second:    130.61 [#/sec] (mean)

Testing test_smarttemplate.php ...
Requests per second:    182.86 [#/sec] (mean)

Testing test_smarty.php ...
Requests per second:    91.43 [#/sec] (mean)

Testing test_smarty_light.php ...
Requests per second:    136.17 [#/sec] (mean)

Jak widac tutaj nie ma juz takich dysproporcji, ale przydaloby sie przegonic przynajmniej te Smarty smile.gif

PS. opt_lite to jest wersja odchudzona za pomoca dostarczonego konfiguratora (wyrzucone wszystko co mozna wyrzucic)
Bastion
FiDO - chameleon jeszcze ma jedna wade, w przypadku gdy zmiennej nie ma wstawia ten tag {niema} - dlatego musi za kazdym razem sprawdzac czy jest ona ustawiona . Zastanawiam sie czy tego nie wyrzucic smile.gif bo OPT i Smarty nie sprawdza czy zmienna jest ustawiona - tylko wstawia null, lub wartosc.
Turgon
Wszystko pięknie ładnie, ale tylko php 5, czyli źle..
Bastion
Fido: jaki jest odpowiednik w smarty do mojego (@list) ?
Bastion
winksmiley.jpg no to jeszcze musze rozgrysc jak tego uzyc w odpowiedniku do mozlisowsci @list

tego uzyles ?

  1. <?php
  2.  
  3. $data = array(
  4. array('name' => 'John Smith', 'home' => '555-555-5555',
  5. 'cell' => '666-555-5555', 'email' => 'john@myexample.com'),
  6. array('name' => 'Jack Jones', 'home' => '777-555-5555',
  7. 'cell' => '888-555-5555', 'email' => 'jack@myexample.com'),
  8. array('name' => 'Jane Munson', 'home' => '000-555-5555',
  9. 'cell' => '123456', 'email' => 'jane@myexample.com')
  10. );
  11. $smarty->assign('contacts',$data);
  12.  
  13. ?>


Kod
{*
   This is an example of printing an associative array
   of data within a section
*}
{section name=customer loop=$contacts}
<p>
  name: {$contacts[customer].name}<br />
  home: {$contacts[customer].home}<br />
  cell: {$contacts[customer].cell}<br />
  e-mail: {$contacts[customer].email}
</p>
{/section}
FiDO
Zeby bylo bardziej podobne do zwyklej petli for to zapisze to tak:
Kod
{section name=i loop=$tab}
... {$tab[i].pole} ...
{/section}
Bastion
Ok, do rzeczy smile.gif Wydałem przejściową wersje Chameleona 1.1.5. Poprawki tylko kosmetyczne i wydajnościowe. Wszystkie testy wykonałem za pomocą "referencyjnych szablonów" które można zobaczyć tutaj wraz ze zmiennymi : pl/' target='_blank

Ponieważ chameleon dużo obecnie nie potrafi - porównam tylko jego podstawowe możliwości za pomocą benchmarka apache'a.

1) Test 000 - zwykłe zmienne
Smarty 2.6.12 : Requests per second: 115.21 [#/sec] (mean)
OPT 1.0.0-rc2 : Requests per second: 90.79 [#/sec] (mean)
Chameleon 1.1.0 : Requests per second: 181.21 [#/sec] (mean)
Chameleon 1.1.5 : Requests per second: 188.61 [#/sec] (mean)

2) Test 001 - zmienne tablicowe jednowymiarowe
Smarty 2.6.12 : Requests per second: 109.34 [#/sec] (mean)
OPT 1.0.0-rc2 : Requests per second: 89.30 [#/sec] (mean)
Chameleon 1.1.0 : Requests per second: 174.46 [#/sec] (mean)
Chameleon 1.1.5 : Requests per second: 182.55 [#/sec] (mean)

3) Test 002 - listy / loop ( w tym tescie FiDo pokazal totalną porażke Chameleona 1.1.0 )
Smarty 2.6.12 : Requests per second: 69.92 [#/sec] (mean)
OPT 1.0.0.rc2 : Requests per second: 66.76 [#/sec] (mean)
Chameleon 1.1.0 : Requests per second: 60.76 [#/sec] (mean)
Chameleon 1.1.5 : Requests per second: 84.98 [#/sec] (mean)

smile.gif

-- edit

aha - trzeba wyczyscic aktualny cache 1.1.0
FiDO
Kod
Testing Chameleon 1.1.0 CVS            =>   73.38 requests/s
Testing Chameleon 1.1.5                =>  101.33 requests/s
Testing Nemesis 1.3.0b                 =>  163.69 requests/s
Testing OPT 1.0.0 RC2                  =>   79.55 requests/s
Testing OPT 1.0.0 RC2 Lite             =>  113.49 requests/s
Testing Savant 2.4.2                   =>  123.36 requests/s
Testing SmartTemplate 1.0.2            =>  170.24 requests/s
Testing Smarty 2.6.12                  =>   87.75 requests/s
Testing Smarty Light 2.2.11            =>  133.00 requests/s

Moje testy potwierdzaja tego malego kopa smile.gif Popracuj jeszcze nad modyfikatorami i innymi rzeczami, ktore brakuja Twoim szablonom do tego, aby przeprowadzic test na szablonie takiego pokroju jak podal hwao. Ja jestem wlasnie na etapie przygotowywania takiego szablonu, jak skoncze to porownam na nim te systemy, ktore dysponuja potrzebnymi mechanizmami.
Bastion
ohmy.gif 170requestow/s - magia smile.gif to wymaga specjalnego podejscia do sprawy
Diablos
W jaki sposob testujecie ta klase za pomoca Apache Benchmark? tongue.gif
FiDO
W takiej najprostszej wersji to:
ab.exe -c 50 -n 300 http://link/do/strony/dla/danego/systemu.php
(300 odwolan w sumie, po 50 na raz rownolegle)

Zeby to troche zautomatyzowac to napisalem sobie skrypcik w bashu, ktory wywoluje wszystko po kolei automatycznie i wyswietla ladnie wyniki.
Jutro postaram sie udostepnic calosc.

Zrobilem w koncu jakis normalny szablon.. zawiera wiekszosc rzeczy, o ktorych wspomnial hwao. Mam tylko problem ze zmuszeniem do dzialania funkcji cycle w OPT, wiec dla niego nie mam jeszcze gotowego szablonu. Kod wklejony z dokumentacji wywoluje blad :/

Poki co.. szablony sa tu (w wersji Smarty):
http://willow.iie.uz.zgora.pl/~ipatalas/de...tpl/header.html
http://willow.iie.uz.zgora.pl/~ipatalas/de...tpl/footer.html
http://willow.iie.uz.zgora.pl/~ipatalas/de.../tpl/tpl_1.html
(forum automatycznie zmienia duze litery php na male, wiec trzeba sobie w linku to zmienic z powrotem na duze, zeby linki zadzialaly - wszystkie litery w slowie php w linkach powinny byc duze)

Wyniki dla tego szablonu przedstawiaja sie tak:
Kod
Testing Chameleon 1.1.0 CVS            => skipped
Testing Chameleon 1.1.5                => skipped
Testing Nemesis 1.3.0b                 =>  127.15 requests/s
Testing OPT 1.0.0 RC2                  => skipped
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing Savant 2.4.2                   =>  114.29 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty 2.6.12                  =>   58.01 requests/s
Testing Smarty Light 2.2.11            =>   58.18 requests/s


oraz z wlaczonym cachowaniem (oprocz Savanta, u ktorego takiej opcji nie widzialem):

Kod
Testing Chameleon 1.1.0 CVS            => skipped
Testing Chameleon 1.1.5                => skipped
Testing Nemesis 1.3.0b                 =>  228.57 requests/s
Testing OPT 1.0.0 RC2                  => skipped
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing Savant 2.4.2                   =>  113.61 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty 2.6.12                  =>  107.26 requests/s
Testing Smarty Light 2.2.11            =>  150.00 requests/s


Jak widac na takim szablonie Smarty dostaje jeszcze bardziej po tylku.. SmartTemplate nie obsluguje chyba wszystkich rzeczy, ktore sa do tego testu potrzebne (a dokumentacji do niego znalezc nie moge..), a OPT dorobie jak opanuje tego cycle'a.
Slump
Zawsze ad opt mozesz pogadac z zyx.

Na www.zyxist.com (to nie reklama) jesli za to zostanie uznana prosze o usuniecie posta.
Bastion
hum, minie troche czasu zanim Chameleon stanie do biegu, w ogole to swietna sprawa z tym szablonem - wiem co musi byc juz w nastepnym wydaniu. FiDO dobrze by bylo jakbys udostepnil tez skrypt php obslugujacy ten szablon - bo nie wiadomo czy 3 tpl sa ladowane do jednego czy do trzech oddzielnych obiektow .
bigZbig
Robi sie z tego tematu bardzo ciekawy watek. Jak bedzie sie tak dalej rozwijal to proponuje przeniesc go na forum poswieconemu templatom.
Bastion
@FiDO:

Chameleon 1.2.0 relased (changelog)
- UWAGA! należy wyczyścić aktualny cache
- optymalizacja mapy tagów
- obsługa modyfikatorów : date, ucwords, ucfirst, strtoupper, strtolower
- nowa funkcja {@cycle}

myślę że chameleon może stanąć do wyścigu, jest to ostatni relase oparty na mapie tagow, nastepny bedzie juz na kompilatorze. przerobione szablony na format chameleona wystawilem tutaj : http://www.vertis.com.pl/fido/
FiDO
No to update wynikow (pelen komplet szablonow http://willow.iie.uz.zgora.pl/~ipatalas/dev/tpl.rar):

Kod
Cache = 0
Template = tpl_1.html

Testing Chameleon 1.1.0 CVS            => skipped
Testing Chameleon 1.1.5                => skipped
Testing Chameleon 1.2.0                =>   94.12 requests/s
Testing Nemesis 1.3.0b                 =>  121.52 requests/s
Testing OPT 1.0.0 RC2                  => skipped
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing Savant 2.4.2                   =>  108.47 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty 2.6.12                  =>   54.70 requests/s
Testing Smarty Light 2.2.11            =>   55.98 requests/s

===============================
Cache = 1
Template = tpl_1.html

Testing Chameleon 1.1.0 CVS            => skipped
Testing Chameleon 1.1.5                => skipped
Testing Chameleon 1.2.0                =>   94.12 requests/s
Testing Nemesis 1.3.0b                 =>  220.69 requests/s
Testing OPT 1.0.0 RC2                  => skipped
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing Savant 2.4.2                   =>  109.09 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty 2.6.12                  =>  100.52 requests/s
Testing Smarty Light 2.2.11            =>  145.45 requests/s

===============================
Cache = 0
Template = tpl_2.html

Testing Chameleon 1.1.0 CVS            =>   73.28 requests/s
Testing Chameleon 1.1.5                =>  101.59 requests/s
Testing Chameleon 1.2.0                =>   94.58 requests/s
Testing Nemesis 1.3.0b                 =>  158.68 requests/s
Testing OPT 1.0.0 RC2                  =>   79.01 requests/s
Testing OPT 1.0.0 RC2 Lite             =>  112.94 requests/s
Testing Savant 2.4.2                   =>  122.29 requests/s
Testing SmartTemplate 1.0.2            =>  165.52 requests/s
Testing Smarty 2.6.12                  =>   84.96 requests/s
Testing Smarty Light 2.2.11            =>  130.61 requests/s

===============================
Cache = 1
Template = tpl_2.html

Testing Chameleon 1.1.0 CVS            =>   75.00 requests/s
Testing Chameleon 1.1.5                =>  101.59 requests/s
Testing Chameleon 1.2.0                =>   94.12 requests/s
Testing Nemesis 1.3.0b                 =>  192.00 requests/s
Testing OPT 1.0.0 RC2                  =>   78.69 requests/s
Testing OPT 1.0.0 RC2 Lite             =>  112.94 requests/s
Testing Savant 2.4.2                   =>  123.08 requests/s
Testing SmartTemplate 1.0.2            =>  166.96 requests/s
Testing Smarty 2.6.12                  =>   93.66 requests/s
Testing Smarty Light 2.2.11            =>  103.23 requests/s


Kod udostepnie jak znajde chwile na dopracowanie go troszke, bo teraz jest lekka prowizorka i az strach to pokazywac ;P Poki co musze sie zabrac za projekt, bo czas tyka nieublaganie, a ja zamiast go robic to bawie sie jakimis szablonami smile.gif
Jak ktos ma pojecie jak doprowadzic takie cos: {@cls = cycle("par", "odd")} w OPT do dzialania to bede wdzieczny za informacje..
Bastion
dry.gif szkoda ze system tagow a chameleonie nie sprawdzil sie na dluzsza mete.
ale nie ma tego zlego co by na dobre nie wyszlo - wlasnie pracuje nad kompilatorem i mam nadzieje ze "gad" w wersji 1.3.0 bedzie juz smigal smile.gif
hwao
Swoja droga, tez napisalem system szablonów na własne potrzebny:)

Znacie jakies programy debugujace co ile sie wykonuje? (pod php5)

Czyli najlepiej wypisane w którym momecie ile czasu co trwalo smile.gif (nie chodzi mi o phpowe smile.gif tylko jakis specjalny soft do tego).

Pozdrawiam
Bastion
hum, chyba inne mozliwosci jak w php to nie ma, moze zrobic test ile wykonuje sie funkcja pobierajaca czas i wykonujaca odejmowanie miedzy dwoma czasami - i na tego podstawie
wyliczyc czas poprakowy ktory nalezaloby odjac od punktow pomiarowych
FiDO
A XDebug czy profiler, ktory jest w Zendzie ?
hwao
Cytat(FiDO @ 2006-02-21 20:47:36)
A XDebug czy profiler, ktory jest w Zendzie ?

xdebug, nie mam pojecia jak dziala ten klient do niego.... (jak analizowac, ect.. jak ktos uzywal moze napisze how to smile.gif )

a do tego zend'a to jak stawialem sam apacza to smigal w Wampie nie chce za nic sie to odpalic...
aleksander
profilera xdebug pod php5 nie ma. hwao apd uzywam i jestem zadowolony. po szczegóły => jabb
FiDO
To znowu ja smile.gif

Chcialem poczekac na RC3 OPT, bo w obecnej wersji jest blad z tym co pisalem wyzej, ale cos doczekac sie nie moge winksmiley.jpg Wprowadzilem pare malych zmian, aby kod byl troche czytelniejszy, no i teraz przy wlaczonym cachowaniu nie pobieraja sie dane (wczesniej sie pobieraly mimo wlaczonego cachowania, wiec niepotrzebny narzut). Spowodowalo to lekkiego boosta w testach z cachem (tam gdzie jest on dostepny), no ale dziwne to raczej nie jest.
Dodalem tez nowy szablon, ktory rozni sie od pierwszego tylko tym, ze tablica, po ktorej ten szablon iteruje zawiera obiekty, a nie tablice asocjacyjne.

Ponizej zamieszczam nowe wyniki.
Kod
Cache = 0
Template = tpl_1.html

Testing Chameleon 1.1.0 CVS            => skipped
Testing Chameleon 1.1.5                => skipped
Testing Chameleon 1.2.0                =>  100.00 requests/s
Testing Nemesis 1.3.0b                 =>  137.14 requests/s
Testing OPT 1.0.0 RC2                  => skipped
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing Savant 2.4.2                   =>  126.32 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty 2.6.12                  =>   71.11 requests/s
Testing Smarty Light 2.2.11            =>   57.14 requests/s

Cache = 1
Template = tpl_1.html

Testing Chameleon 1.1.0 CVS            => skipped
Testing Chameleon 1.1.5                => skipped
Testing Chameleon 1.2.0                =>  106.67 requests/s
Testing Nemesis 1.3.0b                 =>  290.91 requests/s
Testing OPT 1.0.0 RC2                  => skipped
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing Savant 2.4.2                   =>  126.32 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty 2.6.12                  =>  117.07 requests/s
Testing Smarty Light 2.2.11            =>  162.71 requests/s

Cache = 0
Template = tpl_2.html

Testing Chameleon 1.1.0 CVS            =>   76.80 requests/s
Testing Chameleon 1.1.5                =>  102.13 requests/s
Testing Chameleon 1.2.0                =>   97.96 requests/s
Testing Nemesis 1.3.0b                 =>  162.71 requests/s
Testing OPT 1.0.0 RC2                  =>  100.00 requests/s
Testing OPT 1.0.0 RC2 Lite             =>  109.09 requests/s
Testing Savant 2.4.2                   =>  123.08 requests/s
Testing SmartTemplate 1.0.2            =>  165.52 requests/s
Testing Smarty 2.6.12                  =>   87.27 requests/s
Testing Smarty Light 2.2.11            =>  128.00 requests/s

Cache = 1
Template = tpl_2.html

Testing Chameleon 1.1.0 CVS            =>   76.80 requests/s
Testing Chameleon 1.1.5                =>  102.13 requests/s
Testing Chameleon 1.2.0                =>   97.96 requests/s
Testing Nemesis 1.3.0b                 =>  223.26 requests/s
Testing OPT 1.0.0 RC2                  =>  123.08 requests/s
Testing OPT 1.0.0 RC2 Lite             =>  110.34 requests/s
Testing Savant 2.4.2                   =>  124.68 requests/s
Testing SmartTemplate 1.0.2            =>  162.71 requests/s
Testing Smarty 2.6.12                  =>   93.20 requests/s
Testing Smarty Light 2.2.11            =>  110.34 requests/s

Cache = 0
Template = tpl_3.html

Testing Chameleon 1.1.0 CVS            => skipped
Testing Chameleon 1.1.5                => skipped
Testing Chameleon 1.2.0                => skipped
Testing Nemesis 1.3.0b                 =>  128.00 requests/s
Testing OPT 1.0.0 RC2                  => skipped
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing Savant 2.4.2                   =>  115.66 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty 2.6.12                  =>   66.67 requests/s
Testing Smarty Light 2.2.11            => skipped

Cache = 1
Template = tpl_3.html

Testing Chameleon 1.1.0 CVS            => skipped
Testing Chameleon 1.1.5                => skipped
Testing Chameleon 1.2.0                => skipped
Testing Nemesis 1.3.0b                 =>  266.67 requests/s
Testing OPT 1.0.0 RC2                  => skipped
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing Savant 2.4.2                   =>  118.52 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty 2.6.12                  =>  115.66 requests/s
Testing Smarty Light 2.2.11            => skipped


I zrodelka...
http://willow.iie.uz.zgora.pl/~ipatalas/dev/tpl_bench_AB.rar

oraz dla windowsa minimalna wersja narzedzi potrzebnych do automatycznego wykonywania testu:

http://willow.iie.uz.zgora.pl/~ipatalas/dev/unxutils.rar (wszystkie pliki oprocz cygwin1.dll oraz sh.exe musza byc gdzies w %PATH%)

Wywolanie testu polega na odpaleniu konsoli i wpisaniu w tym katalogu sh test.sh. Nie testowalem tego pod unixami, wiec prosze kogos o sprawdzenie w miare mozliwosci tego skryptu.

Zapraszam do potestowania u siebie oraz do ewentualnego uzupelnienia szablonow tam gdzie brakuja jak ktos potrafi i ma czas. Pomysly na rozbudowanie szablonow lub dodanie nowych rowniez mile widziane smile.gif
sobstel
Cytat(aleksander @ 2006-02-21 22:02:53)
profilera xdebug pod php5 nie ma. hwao apd uzywam i jestem zadowolony. po szczegóły => jabb

w xdebug2 jest profiler! http://xdebug.org/docs-profiling2.php
wyniki dzialana pfoilera mozna odczytac za pomoca KCacheGrind i sa bardzo ladnie graficznie i przejrzyscie przedstawione. polecam! (pod Windows jest jakas alternatywa, ale nie wiem jaka, pisze gdzies na stronie XDebuga)

apd chcialem srpobowac ale po prostu "wywala" sie u mnie na php 5.1.2, wiec zostalem przy XDebug.
NetJaro
Mogę wiedzieć, jak czytać te wyniki? Co to znaczy 114,4 requests/s ? (coś tam na sekundę smile.gif )
Bastion
114 zapytan na sekunde , czyli 114 wykonanych odpowiedzi Apache'a (wyslań strony do klineta)
NetJaro
Tzn. czym więcej tym gorzej smile.gif?
Bastion
im wiecej tym lepiej smile.gif
NetJaro
:| Dziwne.. a gdy skipped, to za dużo snitch.gif?
Bastion
a gdy skipped tzn ze klasa nie potrafila dokonczyc testu, badz nawet go zaczac - z powodow np. takich ze czegos nie obsluguje co w danym tescie jest konieczne
FiDO
Dokladnie tak.
Skipped to jest, gdy dla danego testu brakuje w ogole szablonu albo z powodu braku potrzebnej funkcjonalnosci, albo z powodu braku wiedzy u mnie na temat obslugi tej funkcjonalnosci smile.gif
OPT bedzie uzupelniony o brakujace testy jak tylko wyjdziep poprawiona wersja. Podobno ma tez dostac malego kopa wydajnosciowego.. zobaczymy. Co do reszty brakujacych testow to albo nie moglem znalezc dokumentacji do danego systemu albo znalazlem i nie bylo w nim nic o potrzebnej funkcjonalnosci.
Nadal apeluje o sprawdzenie tego testu u kogos na linuxie/unixie, jestem ciekaw czy proporcje wynikow sie zachowaja...
Bastion
Kod
Slackware Linux / P4 HT 2800MHz / 512MB / ApacheBench, Version 1.3d / php 5.1.2


Kod
Cache = 0
Template = tpl_1.html

Testing Chameleon 1.1.5                => skipped
Testing Chameleon 1.2.0                =>  109.90 requests/s
Testing Chameleon 1.1.0 CVS            => skipped
Testing Nemesis 1.3.0b                 =>  156.09 requests/s
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing OPT 1.0.0 RC2                  => skipped
Testing Savant 2.4.2                   =>  132.63 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty Light 2.2.11            =>   77.96 requests/s
Testing Smarty 2.6.12                  =>   63.13 requests/s

Cache = 1
Template = tpl_1.html

Testing Chameleon 1.1.5                => skipped
Testing Chameleon 1.2.0                =>   107.94 requests/s
Testing Chameleon 1.1.0 CVS            => skipped
Testing Nemesis 1.3.0b                 =>  311.20 requests/s
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing OPT 1.0.0 RC2                  => skipped
Testing Savant 2.4.2                   =>  130.55 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty Light 2.2.11            =>  161.81 requests/s
Testing Smarty 2.6.12                  =>   98.88 requests/s

Cache = 0
Template = tpl_2.html

Testing Chameleon 1.1.5                =>   99.07 requests/s
Testing Chameleon 1.2.0                =>   94.87 requests/s
Testing Chameleon 1.1.0 CVS            =>   59.17 requests/s
Testing Nemesis 1.3.0b                 =>  163.40 requests/s
Testing OPT 1.0.0 RC2 Lite             =>  104.90 requests/s
Testing OPT 1.0.0 RC2                  =>   90.47 requests/s
Testing Savant 2.4.2                   =>  119.71 requests/s
Testing SmartTemplate 1.0.2            =>  171.23 requests/s
Testing Smarty Light 2.2.11            =>  127.77 requests/s
Testing Smarty 2.6.12                  =>   73.28 requests/s

Cache = 1
Template = tpl_2.html

Testing Chameleon 1.1.5                =>   97.87 requests/s
Testing Chameleon 1.2.0                =>   99.16 requests/s
Testing Chameleon 1.1.0 CVS            =>   58.53 requests/s
Testing Nemesis 1.3.0b                 =>  271.25 requests/s
Testing OPT 1.0.0 RC2 Lite             =>  106.01 requests/s
Testing OPT 1.0.0 RC2                  =>  114.07 requests/s
Testing Savant 2.4.2                   =>  118.39 requests/s
Testing SmartTemplate 1.0.2            =>  172.02 requests/s
Testing Smarty Light 2.2.11            =>  121.85 requests/s
Testing Smarty 2.6.12                  =>   94.82 requests/s

Cache = 0
Template = tpl_3.html

Testing Chameleon 1.1.5                => skipped
Testing Chameleon 1.2.0                => skipped
Testing Chameleon 1.1.0 CVS            => skipped
Testing Nemesis 1.3.0b                 =>  165.93 requests/s
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing OPT 1.0.0 RC2                  => skipped
Testing Savant 2.4.2                   =>  133.69 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty Light 2.2.11            => skipped
Testing Smarty 2.6.12                  =>   62.47 requests/s

Cache = 1
Template = tpl_3.html

Testing Chameleon 1.1.5                => skipped
Testing Chameleon 1.2.0                => skipped
Testing Chameleon 1.1.0 CVS            => skipped
Testing Nemesis 1.3.0b                 =>  328.95 requests/s
Testing OPT 1.0.0 RC2 Lite             => skipped
Testing OPT 1.0.0 RC2                  => skipped
Testing Savant 2.4.2                   =>  134.05 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty Light 2.2.11            => skipped
Testing Smarty 2.6.12                  =>  102.25 requests/s
NetJaro
Skoro.. "czym więcej tym lepiej" to Twoja klasa słabo wyszła..
Bastion
W porownaniu z moja to zwykle smarty slabo wyszlo, ale po rozmowach z FiDO doszedlem do wniosku ze tagi to lipia - i trzeba przerzucic sie na kompilacje smile.gif tak wiec jeszcze sie odezwe z moim "gadem" smile.gif
NetJaro
sad.gif sad.gif sad.gif

A ja szukam wlasnie jakiegos systemu dobrego, bo pisze duzo projekt.. sad.gif Czekam z WIELKĄ NADZIJĄexclamation.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.