Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [klasa] Chameleon 1.9.1, Prosta ale szybka obsługa szablonów
Bastion
post
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
----------------------------------------------------------

  1. <?php
  2.  
  3. require_once('../libs/class.chameleon.php');
  4.  
  5. $tpl = new Chameleon;
  6.  
  7. // Ustawienie sciezek dostepu do szablonow i cache mapy tagow
  8. $tpl->template_dir = './templates'; // default
  9. $tpl->tags_dir = './templates_tags'; // default
  10.  
  11. // Ustawienie czy przechowywac tagi
  12. $tpl->store_tags = true; // default
  13.  
  14. // Wczytsanie szablonu
  15. $tpl->load('example1.tpl');
  16.  
  17. // Dodanie zmiennej
  18. $tpl->setVar('title', 'Witaj przyjacielu');
  19.  
  20. // Wyswietlenie szablonu
  21. $tpl->display();
  22.  
  23. ?>

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

--

  1. <?php
  2.  
  3. require_once('../libs/class.chameleon.php');
  4.  
  5. $tpl = new Chameleon;
  6.  
  7. // Ustawienie sciezek dostepu do szablonow i cache mapy tagow
  8. $tpl->template_dir = './templates'; // default
  9. $tpl->tags_dir = './templates_tags'; // default
  10.  
  11. // Ustawienie czy przechowywac tagi
  12. $tpl->store_tags = true; // default
  13.  
  14. // Wczytsanie szablonu
  15. $tpl->load('example3.tpl');
  16.  
  17. // Dodanie zmiennej
  18. $tpl->setVar('title', 'Witaj przyjacielu');
  19.  
  20. // Zmienna tablicowa
  21. $tablica = array('0' => 'mama', '1' => 'tata');
  22. $tpl->setVar('rodzice', $tablica);
  23.  
  24. // Wyswietlenie szablonu
  25. $tpl->display();
  26.  
  27. ?>

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

--

  1. <?php
  2.  
  3. require_once('../libs/class.chameleon.php');
  4.  
  5. $tpl = new Chameleon;
  6.  
  7. // Ustawienie sciezek dostepu do szablonow i cache mapy tagow
  8. $tpl->template_dir = './templates'; // default
  9. $tpl->tags_dir = './templates_tags'; // default
  10.  
  11. // Ustawienie czy przechowywac tagi
  12. $tpl->store_tags = true; // default
  13.  
  14. // Wczytsanie szablonu
  15. $tpl->load('example6.tpl');
  16.  
  17. // Dodanie zmiennej
  18. $tpl->setVar('title', 'Witaj przyjacielu');
  19. $tpl->setVar('zmiennaA', 10);
  20. $tpl->setVar('zmiennaC', true);
  21.  
  22. // Wyswietlenie szablonu
  23. $tpl->display();
  24.  
  25. ?>

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

--

  1. <?php
  2.  
  3. require_once('../libs/class.chameleon.php');
  4.  
  5. $tpl = new Chameleon;
  6.  
  7. // Ustawienie sciezek dostepu do szablonow i cache mapy tagow
  8. $tpl->template_dir = './templates'; // default
  9. $tpl->tags_dir = './templates_tags'; // default
  10.  
  11. // Ustawienie czy przechowywac tagi
  12. $tpl->store_tags = true; // default
  13.  
  14. $newsy[0] = array ('topic' => 'Temat Pierwszy', 'content' => 'Tresc 1');
  15. $newsy[1] = array ('topic' => 'Temat Drugi', 'content' => 'Tresc 2');
  16. $newsy[2] = array ('topic' => 'Temat Trzeci', 'content' => 'Tresc 3');
  17. $newsy[3] = array ('topic' => 'Temat Czwarty', 'content' => 'Tresc 4');
  18.  
  19. // Wczytsanie szablonu
  20. $tpl->load('example7.tpl');
  21.  
  22. // Dodanie zmiennej
  23. $tpl->setVar('title', 'Witaj przyjacielu');
  24. $tpl->setVar('newsy', $newsy);
  25.  
  26. // Wyswietlenie szablonu
  27. $tpl->display();
  28.  
  29. ?>

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


--------------------
Go to the top of the page
+Quote Post
7 Stron V   1 2 3 > »   
Start new topic
Odpowiedzi (1 - 99)
hwao
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




chciałbym jeszcze zobaczyc "skompilowany plik" smile.gif o ile takowy jest (czy to przed eval czy w cache).

Czy jest cos jak include?

ify?
Go to the top of the page
+Quote Post
Chewolf
post
Post #3





Grupa: Zarejestrowani
Postów: 335
Pomógł: 0
Dołączył: 15.11.2003

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


Cytat(hwao @ 2006-02-10 08:30:40)
ify?

ekhm ify to chyba warunki... więc kolega podał przykład wyżej
Go to the top of the page
+Quote Post
Bastion
post
Post #4





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


hwao : tu sa przechowane tagi (cache) : ags/' target='_blank

jesli chodzi o includy biggrin.gif wiedzialem ze czegos jeszcze brak biggrin.gif dorobie


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




hmmm, fajne smile.gif

Rzecz, która od razu rzuca mi się w oczy to kolorowanie zmiennych, których nie ma. W przypadku gdy szablon bedzie rozbudowany, duzo info na stronie bedzie, najzwyklej w swiecie ta informacja o niezdefiniowanych zmiennych umknie. Powinien byc jasny i wyraźny komunikat, że taka i taka zmienna nie istnieje, że taki a taki index tablicy jest nieokreślony. Tekst ten powinien sie wyswietlic albo zamiast zmiennej, albo gdzies na górze. Oczywiście mozna by ustawić, czy takie info ma sie wyswietlac. Np. wyswietlac tylko w trybie debug. (podczas tworzenia aplikacji)


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Bastion
post
Post #6





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


nospor : Brdzo dobry pomysl. Znalazl sie juz u mnie na tapecie razem z includami smile.gif


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




hehe, żeby nie bylo, że to ja taki genialny. Tak jest wlasnie w smartym, którego uzyles do testow. Gdy brak zmiennej, to zamiast niej lecą warningi. Czegoś takiego nie da się nie zauwazyć winksmiley.jpg

ps: czasy co pokazales są bardzo obiecujące. Może wyjdzie z tego coś ciekawego smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Bastion
post
Post #8





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


smile.gif idac za ciosem moze dodac tez tryb SILENT, np gdy zmienna {VAR} nie bedzie zdefiniowana zostanie poprostu pominieta, albo dodac specjalny operator "cichych" zmiennych

np w przypadu gdy nie bedzie zmiennej

przy {VAR} wyswietli sie warning
a przy {?VAR} zostanie pominiety.

da to fajna mozliwosc gdy ktos np nie bedzie mial ustawionego Emaila to sie pyknie w szablonie {?EMAIL} zamiast

{@if(EMAIL)} {EMAIL} {@fi}

Ten post edytował Bastion 10.02.2006, 10:36:52


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
da to fajna mozliwosc gdy ktos np nie bedzie mial ustawionego Emaila to sie pyknie w szablonie {?EMAIL} zamiast

{@if(EMAIL)} {EMAIL} {@fi}
Akurat do tego to zly przyklad dales. Bo taka sytuacja:
Kod
{@if(EMAIL)} Twoj email:{EMAIL} {@fi}

a jesli wlaczyc tryb silent:
Kod
Twoj email:{?EMAIL}
Przy braku ustawionej zmiennej email, tekst "Twoj email:" dalej bedzie sie wyswietlal winksmiley.jpg

W szablonach tryb silent do zmiennych jest zbedny. Te komunikatu o braku zmiennych są przydatne na etapie tworzenia aplikacji. Zazwyczaj dostaniesz go gdy zrobisz jakąs literowke lub cos w tym stylu. gdy juz aplikacja bedzie dzialala, to raczej same z siebie literowki w kodzie się nie będą pojawialy winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Bastion
post
Post #10





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


moze i racja smile.gif musze sie z tym przespac tongue.gif aarambo.gif


--------------------
Go to the top of the page
+Quote Post
Diablos
post
Post #11





Grupa: Zarejestrowani
Postów: 165
Pomógł: 6
Dołączył: 17.06.2005

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


Bastion: zainteresuj sie jeszcze OPT i jego mozliwosciami: opt.openpb.net
Go to the top of the page
+Quote Post
Bastion
post
Post #12





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


tzn. czym dokladnie?


--------------------
Go to the top of the page
+Quote Post
bigZbig
post
Post #13





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Open Power Template


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
Bastion
post
Post #14





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


BigZbig : znam juz ten adres - a pytalem na co konkretnie zwrocic uwage smile.gif


--------------------
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


co do trybu silent.. w smartym jest cos takiego jak modyfikator default. uzycie
Kod
{$sth|default:"asdas"}

jesli $sth jes tpuste to pokaze sie 'asdas'... moze to kogos zainspiruje smile.gif
Go to the top of the page
+Quote Post
Bastion
post
Post #16





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


smile.gif poszlo na tapete smile.gif cool.gif


--------------------
Go to the top of the page
+Quote Post
bigZbig
post
Post #17





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Cytat(Bastion @ 2006-02-10 16:32:59)
BigZbig : znam juz ten adres - a pytalem na co konkretnie zwrocic uwage smile.gif

Moze zwyczajnie zrobisz testy tak jak to uczyniles ze smarty.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
Bastion
post
Post #18





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


@bigZbig

moze powiesz mi jak zmusic by OPT tylko parsowal zamiast wyswietlac wynik parsowania ?

  1. <?php
  2. function opt_tpl_1_1()
  3. {
  4. $tpl = new optClass;
  5. $tpl->root = './opt/templates/';
  6. $tpl->compile = './opt/templates_c/';
  7. $tpl->httpHeaders(OPT_HTML);
  8. $tpl->gzipCompression = 0;
  9. for ($i = 0; $i < 20; $i++)
  10. {
  11. $tpl->assign("var$i", 'blah');
  12. }
  13. $tpl->parse('template.tpl');
  14. }
  15.  
  16. ?>


--------------------
Go to the top of the page
+Quote Post
bigZbig
post
Post #19





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Nie znam mozliwosci OPT wiec Ci nie powiem, ale jesli sam je odkryjesz, albo uzyskasz taka informacje od autora to sie podziel. Tymczasem moze zrobilbys inny test polegajacy na wyswietleniu okreslonych porcji danych (przy uzyciu analogicznych szablonow). Pierwsze wyswietlenie i drugie - taki maly pomiar czasu. Zrob jakies w miare proste szablony bez zaawansowanej funkcjonalnosci. Chetnie sie zapoznam z wynikami takiego testu.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #20





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


  1. <?php
  2. echo $tpl->fetch('template.tpl');
  3. ?>

smile.gif
Go to the top of the page
+Quote Post
Bastion
post
Post #21





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


bigZbig :

Smarty : 500 iteracji (20 zmiennych) = 0.3002s
Smarty : 500 iteracji (10 zmiennych) = 0.2838s
Smarty : 500 iteracji (5 zmiennych) = 0.2702s
Smarty : 500 powtórzeń (20 zmiennych) = 0.2337s
Chameleon : 500 iteracji (20 zmiennych) = 0.2065s
Chameleon : 500 iteracji (10 zmiennych) = 0.2106s
Chameleon : 500 iteracji (5 zmiennych) = 0.2020s
Chameleon : 500 powtórzeń (20 zmiennych) = 0.1194s
OPT : 500 iteracji (20 zmiennych) = 0.3786s
OPT : 500 iteracji (10 zmiennych) = 0.3648s
OPT : 500 iteracji (5 zmiennych) = 0.3442s
OPT : 500 powtórzeń (20 zmiennych) = 0.2496s

Szablon testowy Chameleon : http://www.vertis.com.pl/trash/template1.tpl
Szablon testowy Smarty / OPT : http://www.vertis.com.pl/trash/template2.tpl

Oba sa analogiczne - 20 zmiennych - rozmiar ~10kB

Ten post edytował Bastion 10.02.2006, 18:32:44


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #22





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%)
-----


Jak mozesz to udostepnij caly kod testujacy, tak zebym mogl odpalic to u siebie.. chetnie porownam do swojego systemu winksmiley.jpg Dodam tez cos od siebie, bo ten test jest troche za prosty.. prosta zamiana zmiennych to za malo jak na obiektywny test.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Bastion
post
Post #23





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


  1. <?php
  2.  
  3. include_once('chameleon/class.chameleon.php');
  4. include_once('smarty/Smarty.class.php');
  5.  
  6. define('OPT_DIR', './opt/lib/');
  7. include_once('opt/lib/opt.class.php');
  8.  
  9. function get_microtime()
  10. {
  11. list($usec, $sec) = explode(" ", microtime());
  12. return ((float)$usec + (float)$sec);
  13. }
  14.  
  15.  
  16. // - OPT -
  17. function opt_tpl_1_1()
  18. {
  19. $tpl = new optClass;
  20. $tpl->root = './opt/templates/';
  21. $tpl->compile = './opt/templates_c/';
  22. $tpl->httpHeaders(OPT_HTML);
  23. $tpl->gzipCompression = 0;
  24. for ($i = 0; $i < 20; $i++)
  25. {
  26. $tpl->assign("var$i", 'blah');
  27. }
  28. $tpl->fetch('template.tpl');
  29. }
  30.  
  31. // - OPT -
  32. function opt_tpl_1_2()
  33. {
  34. $tpl = new optClass;
  35. $tpl->root = './opt/templates/';
  36. $tpl->compile = './opt/templates_c/';
  37. $tpl->httpHeaders(OPT_HTML);
  38. $tpl->gzipCompression = 0;
  39. for ($i = 0; $i < 10; $i++)
  40. {
  41. $tpl->assign("var$i", 'blah');
  42. }
  43. $tpl->fetch('template.tpl');
  44. }
  45.  
  46. // - OPT -
  47. function opt_tpl_1_3()
  48. {
  49. $tpl = new optClass;
  50. $tpl->root = './opt/templates/';
  51. $tpl->compile = './opt/templates_c/';
  52. $tpl->httpHeaders(OPT_HTML);
  53. $tpl->gzipCompression = 0;
  54. for ($i = 0; $i < 5; $i++)
  55. {
  56. $tpl->assign("var$i", 'blah');
  57. }
  58. $tpl->fetch('template.tpl');
  59. }
  60.  
  61. function opt_tpl_2_1()
  62. {
  63. $tpl = new optClass;
  64. $tpl->root = './opt/templates/';
  65. $tpl->compile = './opt/templates_c/';
  66. $tpl->httpHeaders(OPT_HTML);
  67. $tpl->gzipCompression = 0;
  68. for ($i = 0; $i < 20; $i++)
  69. {
  70. $tpl->assign("var$i", 'blah');
  71. }
  72. for ($i=0; $i<500; $i++)
  73. {
  74. $tpl->fetch('template.tpl');
  75. }
  76. }
  77.  
  78. // - SMARTY -
  79. function smarty_tpl_1_1()
  80. {
  81. $tpl = new Smarty;
  82. $tpl->template_dir = './smarty/templates';
  83. $tpl->compile_dir = './smarty/templates_c';
  84. $tpl->compile_check = false;
  85. for ($i = 0; $i < 20; $i++)
  86. {
  87. $tpl->assign("var$i", 'blah');
  88. }
  89. $tpl->fetch('template.tpl');
  90. }
  91.  
  92. function smarty_tpl_1_2()
  93. {
  94. $tpl = new Smarty;
  95. $tpl->template_dir = './smarty/templates';
  96. $tpl->compile_dir = './smarty/templates_c';
  97. $tpl->compile_check = false;
  98. for ($i = 0; $i < 10; $i++)
  99. {
  100. $tpl->assign("var$i", 'blah');
  101. }
  102. $tpl->fetch('template.tpl');
  103. }
  104.  
  105. function smarty_tpl_1_3()
  106. {
  107. $tpl = new Smarty;
  108. $tpl->template_dir = './smarty/templates';
  109. $tpl->compile_dir = './smarty/templates_c';
  110. $tpl->compile_check = false;
  111. for ($i = 0; $i < 5; $i++)
  112. {
  113. $tpl->assign("var$i", 'blah');
  114. }
  115. $tpl->fetch('template.tpl');
  116. }
  117.  
  118. function smarty_tpl_2_1()
  119. {
  120. $tpl = new Smarty;
  121. $tpl->template_dir = './smarty/templates';
  122. $tpl->compile_dir = './smarty/templates_c';
  123. $tpl->compile_check = false;
  124.  
  125. for ($i = 0; $i < 20; $i++)
  126. {
  127. $tpl->assign("var$i", 'blah');
  128. }
  129.  
  130. for ($i=0; $i<500; $i++)
  131. {
  132. $tpl->fetch('template.tpl');
  133. }
  134. }
  135.  
  136. // - CHAMELEON -
  137. function chameleon_tpl_1_1()
  138. {
  139. $tpl = new Chameleon;
  140. $tpl->template_dir = './chameleon/templates';
  141. $tpl->tags_dir = './chameleon/templates_tags';
  142. $tpl->load('template.tpl');
  143. for ($i = 0; $i < 20; $i++)
  144. {
  145. $tpl->setVar("var$i", 'blah');
  146. }
  147. $tpl->parse();
  148. }
  149.  
  150. function chameleon_tpl_1_2()
  151. {
  152. $tpl = new Chameleon;
  153. $tpl->template_dir = './chameleon/templates';
  154. $tpl->tags_dir = './chameleon/templates_tags';
  155. $tpl->load('template.tpl');
  156. for ($i = 0; $i < 10; $i++)
  157. {
  158. $tpl->setVar("var$i", 'blah');
  159. }
  160. $tpl->parse();
  161. }
  162.  
  163. function chameleon_tpl_1_3()
  164. {
  165. $tpl = new Chameleon;
  166. $tpl->template_dir = './chameleon/templates';
  167. $tpl->tags_dir = './chameleon/templates_tags';
  168. $tpl->load('template.tpl');
  169. for ($i = 0; $i < 5; $i++)
  170. {
  171. $tpl->setVar("var$i", 'blah');
  172. }
  173. $tpl->parse();
  174. }
  175.  
  176. function chameleon_tpl_2_1()
  177. {
  178. $tpl = new Chameleon;
  179. $tpl->template_dir = './chameleon/templates';
  180. $tpl->tags_dir = './chameleon/templates_tags';
  181. $tpl->load('template.tpl');
  182. for ($i = 0; $i < 20; $i++)
  183. {
  184. $tpl->setVar("var$i", 'blah');
  185. }
  186. for ($i=0; $i<500; $i++)
  187. {
  188. $tpl->parse();
  189. }
  190. }
  191.  
  192. // -----------------------------------------
  193.  
  194. $start = get_microtime();
  195. for ($i=0; $i<500; $i++)
  196. {
  197.  smarty_tpl_1_1();
  198. }
  199. $end = get_microtime();
  200. print 'Smarty : 500 iteracji (20 zmiennych) = '.number_format($end-$start,4)."s<br />";
  201.  
  202. $start = get_microtime();
  203. for ($i=0; $i<500; $i++)
  204. {
  205.  smarty_tpl_1_2();
  206. }
  207. $end = get_microtime();
  208. print 'Smarty : 500 iteracji (10 zmiennych) = '.number_format($end-$start,4)."s<br />";
  209.  
  210. $start = get_microtime();
  211. for ($i=0; $i<500; $i++)
  212. {
  213.  smarty_tpl_1_3();
  214. }
  215. $end = get_microtime();
  216. print 'Smarty : 500 iteracji (5 zmiennych) = '.number_format($end-$start,4)."s<br />";
  217.  
  218. $start = get_microtime();
  219. smarty_tpl_2_1();
  220. $end = get_microtime();
  221. print 'Smarty : 500 powtórzeń (20 zmiennych) = '.number_format($end-$start,4)."s<br />";
  222.  
  223. // ----------------------------------------------
  224.  
  225. $start = get_microtime();
  226. for ($i=0; $i<500; $i++)
  227. {
  228.  chameleon_tpl_1_1();
  229. }
  230. $end = get_microtime();
  231. print 'Chameleon : 500 iteracji (20 zmiennych) = '.number_format($end-$start,4)."s<br />";
  232.  
  233. $start = get_microtime();
  234. for ($i=0; $i<500; $i++)
  235. {
  236.  chameleon_tpl_1_2();
  237. }
  238. $end = get_microtime();
  239. print 'Chameleon : 500 iteracji (10 zmiennych) = '.number_format($end-$start,4)."s<br />";
  240.  
  241. $start = get_microtime();
  242. for ($i=0; $i<500; $i++)
  243. {
  244.  chameleon_tpl_1_3();
  245. }
  246. $end = get_microtime();
  247. print 'Chameleon : 500 iteracji (5 zmiennych) = '.number_format($end-$start,4)."s<br />";
  248.  
  249. $start = get_microtime();
  250. chameleon_tpl_2_1();
  251. $end = get_microtime();
  252. print 'Chameleon : 500 powtórzeń (20 zmiennych) = '.number_format($end-$start,4)."s<br />";
  253.  
  254. // ----------------------------------------------
  255.  
  256. $start = get_microtime();
  257. for ($i=0; $i<500; $i++)
  258. {
  259.  opt_tpl_1_1();
  260. }
  261. $end = get_microtime();
  262. print 'OPT : 500 iteracji (20 zmiennych) = '.number_format($end-$start,4)."s<br />";
  263.  
  264. $start = get_microtime();
  265. for ($i=0; $i<500; $i++)
  266. {
  267.  opt_tpl_1_2();
  268. }
  269. $end = get_microtime();
  270. print 'OPT : 500 iteracji (10 zmiennych) = '.number_format($end-$start,4)."s<br />";
  271.  
  272. $start = get_microtime();
  273. for ($i=0; $i<500; $i++)
  274. {
  275.  opt_tpl_1_3();
  276. }
  277. $end = get_microtime();
  278. print 'OPT : 500 iteracji (5 zmiennych) = '.number_format($end-$start,4)."s<br />";
  279.  
  280. $start = get_microtime();
  281. opt_tpl_2_1();
  282. $end = get_microtime();
  283. print 'OPT : 500 powtórzeń (20 zmiennych) = '.number_format($end-$start,4)."s<br />";
  284.  
  285. ?>


--------------------
Go to the top of the page
+Quote Post
NetJaro
post
Post #24





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


Bardzo ciekawy projekt.. ahh, trzeba spróbować. smile.gif Gratuluje!
Go to the top of the page
+Quote Post
Bastion
post
Post #25





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


NetJaro: Wszystkie uwagi , przedewszystkim krytyczne mile widzane biggrin.gif aarambo.gif


--------------------
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #26





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


dla mnie najwiekszy minus, to ciezka przesiadka ze smartego.
Go to the top of the page
+Quote Post
NetJaro
post
Post #27





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


Bastion, prosze, nie zrób z tego projektu jakiegoś wielkiego SMARTY, które będzie zawierało masę funkcji.. smile.gif Może zrobisz konf. (jak jest w OPT), w którym się wybiera jakie opcje są dostępne w klasie (czyli, gdy ktoś nie chce warunków w tpl-kach, oznacza w konfiguratorze i w klasie nie ma tych funkcji) smile.gif
Go to the top of the page
+Quote Post
Bastion
post
Post #28





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


@ActivePlayer : dla mnie wielkim minusem jest ogrom Smarty i mala czytelnosc (jak dla mnie) szablonu. Prawda jest taka ze aby uzyc smarty trzeba sie przebic przez mase touturiali. W dodatku z tego co zauwazylem blad w szablonie konczy sie kleska w smarty. Jak dla mnie Smarty daaaaawno zatracil to czym powinny byc szablony. Moze masz racje ze przesiadka jest klopotliwa z istniejacych projektow, ale nic nie stoi na przeszkodzie kozystac z czegos innego w kolejnych.

@NetJaro : spoko-majonez smile.gif jak to sie mowi w mojej wiosce - jesli beda pojawialy sie nowe ciezkie rzeczy beda pojawialy sie jako pluginy. Wlasnie pracuje nad mechanizmem wtyczkek, ktore bedzie mozna latwo wlaczac i wylaczac. Chameleon nigdy nie stanie sie czyms podobnym do Smarty - dlatego wlasnie napisalem ten


--------------------
Go to the top of the page
+Quote Post
SHiP
post
Post #29





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


No cóż klasa jak widze chodzi tylko pod php5 ;] przerobiłem pod 4 (bo php5 nawet nie mam zainstalowanego) właczyłem i 1,9s przy 500 wywolaniach ma 20zmiennych ;] na moim parserze 1,6s(tylko ze moj jest lekko mniej modyfikowalny =) opt nie sprawdzalem bo ta bestia ma za dużo plikow i po prostu mi sie nie chciało winksmiley.jpg

moj komputer: duron 800mhz 256sdram

Wiecie dlaczego takie wyniki? o.O to moze przez wersje php??


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
Bastion
post
Post #30





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


- dales prawa zapisu na katalog templates_tags ?
- mozesz przekleic tu szablon na ktorym testowales i twoja klase ?

- ja zauwazylem ze testujac ta sama klase tylko przy

przy 500 iteracjach to rozbierznosci miedzy dwoma wykonanymi testami moga wyniesci nawet 20%
przy 1000 iteracjach rozbierznosc jest juz tylko ~8%.
przy 2000 iteracjach ~3%
przy 5000 iteracjach ~1%

smile.gif potem powtorze wszystkie testy dla Smarty/OPT/Chameleon dla 5000 iteracji

Ten post edytował Bastion 11.02.2006, 11:09:06


--------------------
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #31





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


@bastion: piszesz na temat pluginów... powiem Ci tak... smarty, po usunięciu z niego pluginów, tez jest takim 'niczym', i jak dla mnie smarty wcale nie jest krową. Ty piszesz o tym ze planujesz wprowadzic jakis system plugów, i bedzie je mozna latwo wylaczac. Po napisaniu n dodatkowych opcji tez bedzie mozna powiedziec ze sie zrobila krowa z systemu.
Go to the top of the page
+Quote Post
Bastion
post
Post #32





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


@ActivePlayer: moze nie, jesli dobrze sie to rozegra - czas pokaze jak to wyjdzie w praniu, jak wspomnialem na samym poczatku napsialem swoj system ze wzgleu na to ze poprostu nie_lubie smariego, za jego zbyt skomplikowanosc - sam przyznaj ze tworzenie tpl pod smarty jest z lekksza zakrecone .


--------------------
Go to the top of the page
+Quote Post
splatch
post
Post #33





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


Cytat
przyznaj ze tworzenie tpl pod smarty jest z lekksza zakrecone.

Tylko za pierwszym razem smile.gif


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #34





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


ok, w takim razie jak zrobisz u Ciebie cos takiego:
1. naprzemiennie kolorowane wiersze
2. formatowanie daty
Jak dla mnie smarty jest naprawde dobre, i wcale nie jest skomplikowane.
Go to the top of the page
+Quote Post
Bastion
post
Post #35





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


@splatch : na moim pierwszym razie sie skonczylo smile.gif

@ActivePlayer : moglbys dac przyklady jakies tych requestow

edytowane 13.02.2006 10:00
[..] ciachu ciachu wyniki nieaktualne [..]

Ten post edytował Bastion 13.02.2006, 10:00:13


--------------------
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #36





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


1. naprzemiennie kolorowane wiersze
w smartym
Kod
{foreach from=$costam name=nazwa item=item}
<div style="background-color: {if $smarty.foreach.nazwa.iteration%2==1}#454545;">{$item}</div>
{foreachelse}
Nie ma wpisów
{/foreach}

albo prosciej
Kod
{foreach from=$costam name=nazwa item=item}
<div style="background-color: {cycle values="#454545, #787878"}" >{$item}</div>
{foreachelse}
Nie ma wpisów
{/foreach}

2. formatowanie daty
  1. <?php
  2. $smarty->assign('data', time())
  3. ?>

Kod
{$data|date_format:"%d-%m-%Y %H:%M"}// parametr jest taki sam jak w funkcji date
Go to the top of the page
+Quote Post
Bastion
post
Post #37





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


{cycle} i formatowanie daty dopisane do tapety smile.gif pwoinno byc w nastepnym wydaniu


--------------------
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #38





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


Cytat
Smarty 2.6.12 : 5000 iteracji (20 zmiennych) : 3.2947s :: 100.00%
Chameleon CVS : 5000 iteracji (20 zmiennych) : 2.0229s :: 162.87%

no i widzisz sad.gif ja patrząc na cos takiego wybiore smarty... bo ta krowa dziala szybciej
Go to the top of the page
+Quote Post
Bastion
post
Post #39





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


Jakie szybciej ? smile.gif Chameleon tutaj jest szybszy o 62%., w tym tesicie byl szybszy o prawie 1.3s smile.gif

W ogole cos przez weekend nie dzialalo forum, wiec w przyplywie wolnego czasu zoptymalizowalem jeszcze mechanizm tagow i ich wykorzystanie dzieki chameleon w stosunku do wersji 1.0.0 jest szybszy o ~25%. A na tle Smarty i OPT wypada tak :

Smarty 2.6.12 : 5000 iteracji (20 zmiennych) : 3.3956s :: 100.00%
Chameleon CVS : 5000 iteracji (20 zmiennych) : 2.0122s :: 168.75%
OPT 1.0.0-rc2 : 5000 iteracji (20 zmiennych) : 5.0350s :: 67.44%

Smarty 2.6.12 : 5000 iteracji (10 zmiennych) : 3.1111s :: 100.00%
Chameleon CVS : 5000 iteracji (10 zmiennych) : 1.8140s :: 171.50%
OPT 1.0.0-rc2 : 5000 iteracji (10 zmiennych) : 4.9267s :: 63.15%

Smarty 2.6.12 : 5000 iteracji (5 zmiennych) : 3.0177s :: 100.00%
Chameleon CVS : 5000 iteracji (5 zmiennych) : 1.7339s :: 174.04%
OPT 1.0.0-rc2 : 5000 iteracji (5 zmiennych) : 4.7145s :: 64.01%

Smarty 2.6.12 : 5000 powtorzen (20 zmiennych) : 2.5835s :: 100.00%
Chameleon CVS : 5000 powtorzen (20 zmiennych) : 0.7771s :: 332.45%
OPT 1.0.0-rc2 : 5000 powtorzen (20 zmiennych) : 2.7544s :: 93.80%

Dzis bede dodwal includowanie, cycle, formatowanie daty oraz warriningi smile.gif

Ten post edytował Bastion 13.02.2006, 09:56:01


--------------------
Go to the top of the page
+Quote Post
Kinool
post
Post #40





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


hmm twoje testy sa troche syntetyczne i nie oddaja rzeczywitosci smile.gif raczej nikt nie uzywa 5000 iteracji z 20 zmiennymi w szablonach smile.gif

lepiej by bylo jak bys parsowa np. tablice wielowymiarowa z 20-40 elementami w foreach do tego jakiesz 10 zmiennych i przedstwil wynik takiego testu, to znacznie lepiej odzwierciedla rzeczywistosc smile.gif


--------------------
Go to the top of the page
+Quote Post
Bastion
post
Post #41





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


hum, dobry pomysl, dzis ukoncze wersje 1.1.0 posiadajaca dodtkowo obsluge
Include, Cycle, i formatowanie daty. I zrobie jakis konkretny test.


--------------------
Go to the top of the page
+Quote Post
splatch
post
Post #42





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


... najlepiej używając Apache Benchmark


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post
SHiP
post
Post #43





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


Cytat(Bastion @ 2006-02-11 10:59:01)
- dales prawa zapisu na katalog templates_tags ?
- mozesz przekleic tu szablon na ktorym testowales i twoja klase ?

http://ehand.muminski.be/template.htm
Kod, wiem ze taki bałagan jest tam lekki =) ale po prostu jeszcze lekko to poprawiam...
skrypt testujący
  1. <?
  2. function ehand_tpl_1_1()
  3. {
  4. $tpl = new template;
  5. $tpl -> dir='./';
  6. $tpl -> zaladuj('template.tpl');
  7. for ($i = 0; $i < 20; $i++)
  8. {
  9. $tpl->bloki["var$i"]= 'blah';
  10. }
  11. $tpl -> konwertuj();
  12. }
  13.  
  14.  
  15. $start = get_microtime();
  16. for ($i=0; $i<500; $i++)
  17. {
  18.  ehand_tpl_1_1();
  19. }
  20. $end = get_microtime();
  21. print 'eHand Template : 500 iteracji (20 zmiennych) = '.number_format($end-$start,4)."s<br />";
  22. ?>

rezta tak jak u ciebie... prawa dostepu sa w koncu co windows to windows laugh.gif


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #44





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


Cytat
Jakie szybciej ? smile.gif Chameleon tutaj jest szybszy o 62%., w tym tesicie byl szybszy o prawie 1.3s smile.gif

ano fakt, spojrzalem na procenty, i nie wiem skad je brales:) jak dla mnei jesli smarty ma 100% a Twoj system wykonal szybciej parse, to powinien miec 60% or sth smile.gif znaczy sie mniej niz smarty winksmiley.jpg

jak dla mnie to przydala by sie tak for sure opcja uzycia funkcji phpowych. gdyby ktos chcial uzyc np ucfrist lub czegos podobnego. a nie sposob wszystkie funkcje ktore moga sie przydac zamiescic jako 'pluginy'
Go to the top of the page
+Quote Post
Bastion
post
Post #45





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


Trach trach - Chameleon 1.1.0 - wydany.

Changelog
- optymalizacje kodu, zwrost wydajnosci od 10 do 20 %
- nowe kolory buttonow : grass, pink, sky
- nowa funkcja laczenia szablonow {@inc(plik.tpl)}
- nowa funkcja formatowania daty {@date(zmienna,"format")}
- trzy tryby pracy debuggera poprzez define('CHAMELEON_DEBUG', tryb)
0 - cicha praca
1 - kolorowanie blednych tagow (domyslnie)
2 - wyswietlanie ostrzezen tekstowych

Kod
To jest plik : <b>exmaple8.tpl</b><br />

{title}<br /><br />

Teraz nastapi dolaczenie pliku example8b.tpl :<br />

{@inc(example8b.tpl)} <br />

A tu znow szablon example8.tpl<br />

Includowanie szablonów
Przykład : http://www.vertis.com.pl/chameleon/examples/example8.php

poprzez dodanie definicji chameleon sypie widocznymi waringami
  1. <?php
  2. define('CHAMELEON_DEBUG', 2);
  3. ?>

Przykład : http://www.vertis.com.pl/chameleon/examples/example9.php

formatwanie daty : {@date(timestamp,"Y-m-d H:i:s")}
gdzie timestamp : $tpl->setVar('timestamp', time);
Przykład : http://www.vertis.com.pl/chameleon/examples/example10.php

---------- uczta numerologa ------ testy syntetycze jak ktos ladnie nazwal - same zmienne zwykle
Smarty 2.6.12 : 5000 iteracji (20 zmiennych) : 3.5313s :: 100.00%
Chameleon 1.1.0 : 5000 iteracji (20 zmiennych) : 2.2199s :: 159.07%
Smarty 2.6.12 : 5000 iteracji (10 zmiennych) : 3.3307s :: 100.00%
Chameleon 1.1.0 : 5000 iteracji (10 zmiennych) : 2.0498s :: 162.49%
Smarty 2.6.12 : 5000 iteracji (5 zmiennych) : 3.2505s :: 100.00%
Chameleon 1.1.0 : 5000 iteracji (5 zmiennych) : 1.9632s :: 165.57%
Smarty 2.6.12 : 5000 powtorzen (20 zmiennych) : 2.8017s :: 100.00%
Chameleon 1.1.0 : 5000 powtorzen (20 zmiennych) : 0.8355s :: 335.33%
Szablon testowy : http://www.vertis.com.pl/trash/template1.tpl
------------------------- testy bardziej naturalne - zmienne, tablice, warunki
Smarty 2.6.12 : 5000 iteracji (10 zmiennych) : 3.3227s :: 100.00%
Chameleon 1.1.0 : 5000 iteracji (10 zmiennych) : 2.9067s :: 114.31%
Smarty 2.6.12 : 5000 powtorzen (10 zmiennych): 2.6862s :: 100.00%
Chameleon 1.1.0 : 5000 powtorzen (10 zmiennych) : 1.3900s :: 193.25%
Szablon testowy : http://www.vertis.com.pl/trash/template2.tpl
-------------------------------------------------------------------------------------------------------------------------

Klasa do pobrania jak zwykle : http://www.vertis.com.pl/


--------------------
Go to the top of the page
+Quote Post
Bastion
post
Post #46





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


free dla niekomercyjnych biggrin.gif chociaz w innych przypadkach tez mozna sie dogadac biggrin.gif za buttonka


--------------------
Go to the top of the page
+Quote Post
SHiP
post
Post #47





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


kurde wywlilem post o licencji bo juz znalazłem =) na o.txt' target='_blank hmm za buttonka =) to byłbym nawet skłonny biggrin.gif tylko nie wiem czy moj projekt duży sukces osiągnie... ale koniec OffTopica =)

Ten post edytował SHiP 13.02.2006, 20:19:15


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
Bastion
post
Post #48





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


pelny tekst licencji tu : http://www.vertis.com.pl/chameleon/README


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #49





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 smile.gif


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Slump
post
Post #50





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 3.01.2004
Skąd: Iława

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


Bardzo ciekawy temat smile.gif
Zalezy pod jakim katem testowac, wyniki beda rozne tongue.gif
Fido moze wezmiesz do tstow opt z svn w wersji rc2 i zobaczymy, bo nie wiem z jakiej kozystasz.
A tak btw dyskusja zaowocowala planami malych zmian w opt:
u_najwazniejszy' target='_blank

Napewno przyczyni sie to do poprawy smile.gif

Ten post edytował Slump 18.02.2006, 01:53:24
Go to the top of the page
+Quote Post
FiDO
post
Post #51





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%)
-----


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.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Bastion
post
Post #52





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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 ?

Ten post edytował Bastion 18.02.2006, 06:32:32


--------------------
Go to the top of the page
+Quote Post
splatch
post
Post #53





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


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


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post
Bastion
post
Post #54





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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

Ten post edytował Bastion 18.02.2006, 14:29:42


--------------------
Go to the top of the page
+Quote Post
Denver
post
Post #55





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 24.09.2003
Skąd: Giżycko / Wrocław

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


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!


--------------------
Go to the top of the page
+Quote Post
Bastion
post
Post #56





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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

Ten post edytował Bastion 18.02.2006, 14:43:21


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #57





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%)
-----


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 ;]


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Bastion
post
Post #58





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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

Ten post edytował Bastion 18.02.2006, 23:25:17


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #59





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%)
-----


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.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Bastion
post
Post #60





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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

Ten post edytował Bastion 18.02.2006, 23:34:29


--------------------
Go to the top of the page
+Quote Post
hwao
post
Post #61


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




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
Go to the top of the page
+Quote Post
Bastion
post
Post #62





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


@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

Ten post edytował Bastion 19.02.2006, 11:17:57


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #63





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%)
-----


@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 ;]


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Bastion
post
Post #64





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #65





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%)
-----


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)


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Bastion
post
Post #66





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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.


--------------------
Go to the top of the page
+Quote Post
Turgon
post
Post #67





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Wszystko pięknie ładnie, ale tylko php 5, czyli źle..


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
Bastion
post
Post #68





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


Fido: jaki jest odpowiednik w smarty do mojego (@list) ?


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #69





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%)
-----


Taki: http://smarty.php.net/manual/en/language.f...ion.section.php


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Bastion
post
Post #70





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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}


Ten post edytował Bastion 19.02.2006, 13:29:24


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #71





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%)
-----


Zeby bylo bardziej podobne do zwyklej petli for to zapisze to tak:
Kod
{section name=i loop=$tab}
... {$tab[i].pole} ...
{/section}


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Bastion
post
Post #72





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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


Ten post edytował Bastion 19.02.2006, 18:27:25


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #73





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%)
-----


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.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Bastion
post
Post #74





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


ohmy.gif 170requestow/s - magia smile.gif to wymaga specjalnego podejscia do sprawy


--------------------
Go to the top of the page
+Quote Post
Diablos
post
Post #75





Grupa: Zarejestrowani
Postów: 165
Pomógł: 6
Dołączył: 17.06.2005

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


W jaki sposob testujecie ta klase za pomoca Apache Benchmark? tongue.gif
Go to the top of the page
+Quote Post
FiDO
post
Post #76





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%)
-----


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.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Slump
post
Post #77





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 3.01.2004
Skąd: Iława

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


Zawsze ad opt mozesz pogadac z zyx.

Na www.zyxist.com (to nie reklama) jesli za to zostanie uznana prosze o usuniecie posta.
Go to the top of the page
+Quote Post
Bastion
post
Post #78





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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 .


--------------------
Go to the top of the page
+Quote Post
bigZbig
post
Post #79





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Robi sie z tego tematu bardzo ciekawy watek. Jak bedzie sie tak dalej rozwijal to proponuje przeniesc go na forum poswieconemu templatom.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
Bastion
post
Post #80





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


@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/


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #81





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%)
-----


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..


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Bastion
post
Post #82





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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


--------------------
Go to the top of the page
+Quote Post
hwao
post
Post #83


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




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
Go to the top of the page
+Quote Post
Bastion
post
Post #84





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #85





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%)
-----


A XDebug czy profiler, ktory jest w Zendzie ?


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
hwao
post
Post #86


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




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...
Go to the top of the page
+Quote Post
aleksander
post
Post #87





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


profilera xdebug pod php5 nie ma. hwao apd uzywam i jestem zadowolony. po szczegóły => jabb
Go to the top of the page
+Quote Post
FiDO
post
Post #88





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%)
-----


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


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
sobstel
post
Post #89





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


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.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
NetJaro
post
Post #90





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


Mogę wiedzieć, jak czytać te wyniki? Co to znaczy 114,4 requests/s ? (coś tam na sekundę smile.gif )
Go to the top of the page
+Quote Post
Bastion
post
Post #91





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


114 zapytan na sekunde , czyli 114 wykonanych odpowiedzi Apache'a (wyslań strony do klineta)


--------------------
Go to the top of the page
+Quote Post
NetJaro
post
Post #92





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


Tzn. czym więcej tym gorzej smile.gif?
Go to the top of the page
+Quote Post
Bastion
post
Post #93





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


im wiecej tym lepiej smile.gif


--------------------
Go to the top of the page
+Quote Post
NetJaro
post
Post #94





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


:| Dziwne.. a gdy skipped, to za dużo snitch.gif?
Go to the top of the page
+Quote Post
Bastion
post
Post #95





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #96





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%)
-----


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...


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Bastion
post
Post #97





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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


--------------------
Go to the top of the page
+Quote Post
NetJaro
post
Post #98





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


Skoro.. "czym więcej tym lepiej" to Twoja klasa słabo wyszła..
Go to the top of the page
+Quote Post
Bastion
post
Post #99





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


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


--------------------
Go to the top of the page
+Quote Post
NetJaro
post
Post #100





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


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
Go to the top of the page
+Quote Post

7 Stron V   1 2 3 > » 
Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 08:00