Smarty 3
Smarty 3 je u alpha, navodno donosi dosta unapređenja, osim što je čist PHP5 kažu da je i brzina poboljšana 2-2,5 puta:
Citat:
|
cool, vec sam mislio da je smarty razvoj potpuno umro
|
Koliko sam ja video, iza nekih fensi imena kriju se jednostavne izmene, pa tako kada kažu "exception error handlig" tu nema ništa extra, čak je poželjno da postavite svoje default exception handlere jer smary sada umesto "trigger_error" zove "throw new Exception". To je što se tiče pluginova manje-više sve, najveće izmene su u samoj Smarty klasi a kompajler je sada razbijen u kompajler funkcije.
A opet, neke izmene su značajne, već sam primetio dosta promenjenog koda, a kažu da je napisano od nule. Pa da vidimo šta će biti sa tim. |
Evo ovde ima spisak noviteta: http://smarty-php.googlecode.com/svn...ibution/README
Off Topic: Napokon izbacuju {section} koji ionako nije imao veze sa vezom :) Evo i jedne važne izmene: The need for {literal} is pretty much going away. Delimiters followed by whitespace will no longer be parsed as a template tag. To znači da { nesto } neće da generiše smary error već će da ispiše baš to, što je recimo dobro za bilo kakav javascript. Jedino što ne vidim nikakvu ozbiljnu potrebu za uveđenjem "php" resource, znači template sada može da bude i običan php file, ali u tom slučaju ne funkcioniše built in security, što je manji problem, a veći problem je što ne funkcionišu modifiers u php templates. |
Pošto ova tema postaje kao moj blog na kome su zabranjeni komentari, u to ime da nastavim pa ako nekoga interesuje - super:
Namestio sam da mi radi Smarty 3, nije tolika frka kao što sam prvi put pomislio jer mi je izbacivao neke čudne greške tipa "ne postoji modifier default" koji je deo smarty paketa pa je neverovatno da ne postoji, na kraju sam provalio da za plugins dir mora da se navede apsolutna putanja za razliku od ranije kada je bila dovoljna samo relativna putanja. Morao sam da popravim još par stvari u templates jer sada prijavljuje grešku ako zagrade nisu kako treba, recimo ovo {if $nesto->funkcija ('test') } prijavlujuje gresku jer se pojavljuje space izmedju imena funkcije i zagrade, kao i pre zatvorenog delimitera. Na kraju sam uradio i malo benchmark, cisto da proverim da li je istina ono sto pricaju o brzinu. Nije to neki naucni benchmark, jednostavno sam po 10-ak puta ponovio sve i dobijao sam skoro uvek priblizno iste vrednosti tako da racunam da je otrpilike tacno: Smarty 2 (nije kompajliran template): Total page load: 0.475 Smarty 2 (kompajliran template): Total page load: 0.319 Smarty 3 (nije kompajliran template): Total page load: 1.825 Smarty 3 (kompajliran template): Total page load: 0.122 To znači da je tačno da je smarty 3 kada je kompajliran bar 3 puta brži od kompajliranog smarty 2, ali je zato proces kompajliranja daleko sporiji. Dobio sam jednom i vrednost od 4 sekunde kada template nije bio kompajliran u Smarty 3. Dakle, na LIVE serveru obavezno prekompajlirati template čim se uploaduje neki novi, odnosno izbegavati akcije tipa "clear all compiled" već očistiti samo one koji su izmenjeni (ako je isključen "compile check" kao što i treba da bude na live serveru) |
tjah, a ja bas navikao da koristim {section} za ispis podataka iz baze..
|
Da, znam, ti, ja i milijardu drugih jer im manual iz nekog razloga forsira primere sa section. To je isto kao što vidiš danas milijardu PHP programera i korisnika koji programiraju sa die() funkcijom - većina primera u PHP manualu su: if (nesto nije u redu) die ();
|
Citat:
|
Znaš da sam pomislio kada sam to napisao da će sada neka cepidlaka od svega što sam napisao do sada da se uhvati za ovo. :) Zašto baš za to? Pa zato što je to najnebitnija reč od svih napisanih. :)
To je, bre, stilska figura a ne statistički podatak. |
Kôd:
To je isto kao što vidiš danas <span class="hiperbola">mnogo</span> PHP programera ... |
Citat:
Kôd:
a:hover { |
Citat:
Iako si rekao da nije neki "naucni test", da li mozes ukratko opisati o koliko se komplikovanom template-u/ima radi (pa si dobio prosjecno vrijeme od oko 2s) i da li je kakav opcode cache bio uklucen prilikom testiranja. Hvala i pozdrav. |
|
Citat:
Dobio sam odgovor da je očekivano i normalno da je parser sada sporiji jer su promenili parser engine (lexer) koji je bolji ali zahtevniji. |
The ternary operator is implemented in smarty 3. It can be used on assignments and output.
Examples: {$x=($y==2)?$foo:$bar} {assign var=x value=($y==2)?$foo:$bar} {($y==2)?$foo:$bar} If you modifiers you have to put the expression into parentheses to avoid ambiguity of the ':'. {($y==2)?($foo|truncate):$bar} Mislim da polako developeri zadiru sve više u Smarty i zahtevaju klasične programerske "shortcuts", nekako nisam baš za ovo (iako je meni lakše). |
Danas je pušten Smarty 3 beta, pogledajte dobro izmene, ima dosta novih stvari a ja nisam primetio problem sa backward compatibility osim problema zbog php 5.3
Ovde možete pronaći više informacija: http://smarty-php.googlecode.com/svn...ibution/README Dakle, ovo je completan rewrite Smarty 2 koji je sada PHP5 kompatibilan. Sve što sam do sada napisao u ovoj temi i dalje stoji, compile je znatno sporiji ali je execute puno brži. |
Hmmm... čudno ... evo rezultata mojih testiranja. Po ovom sto sam ja dobio Smarty 2 je brzi.
Nisam sada nakon svakog testa resetovao masinu i slicno, ali mislim da su uslovi za sve bili fer :) SMARTY 2 nekompajliran template: 1. učitavanje: 13.0 ms 2. učitavanje: 15.0 ms 3. učitavanje: 14.0 ms 4. učitavanje: 8.0 ms 5. učitavanje: 7.7 ms min: 7.7 ms max: 15.0 ms Rezultati mjereni sa Xdebugom. compile_check i force_complie setovani na 'true'. kompajliran template: 1. učitavanje: 2.9 ms 2. učitavanje: 3.8 ms 3. učitavanje: 3.5 ms 4. učitavanje: 3.0 ms 5. učitavanje: 4.4 ms min: 2.9 ms max: 4.4 ms Rezultati mjereni sa Xdebugom. compile_check i force_complie setovani na 'false'. AB (kompajliran template) ab -n 1000 -c 100 1. time taken for test: 47.64 sec 2. time taken for test: 44.37 sec 3. time taken for test: 44.93 sec Rezultati mjereni sa Apache benchom (AB). compile_check i force_complie setovani na 'false'. SMARTY 3 nekompajliran template: 1. učitavanje: 38.0 ms 2. učitavanje: 42.0 ms 3. učitavanje: 38.0 ms 4. učitavanje: 37.0 ms 5. učitavanje: 38.0 ms min: 37.0 ms max: 42.0 ms Rezultati mjereni sa Xdebugom. compile_check i force_complie setovani na 'true'. kompajliran template: 1. učitavanje: 9.1 ms 2. učitavanje: 4.7 ms 3. učitavanje: 4.8 ms 4. učitavanje: 6.1 ms 5. učitavanje: 4.6 ms min: 4.6 ms max: 9.1 ms Rezultati mjereni sa Xdebugom. compile_check i force_complie setovani na 'false'. AB (kompajliran template) ab -n 1000 -c 100 1. time taken for test: 61.45 sec 2. time taken for test: 54.20 sec 3. time taken for test: 59.43 sec Rezultati mjereni sa Apache benchom (AB). compile_check i force_complie setovani na 'false'. |
Ne bih znao da ti kažem, moji rezultati su potvrdili njihovu izjavu da je smaty 3 briži pri izvršavanju. Koji PHP imaš?
|
PHP Version 5.2.3 with eAccelerator v0.9.5.1
Nisam siguran ni ja sta bi mogao biti razlog. Iskreno, volio bih kada bi jos neko dosao i postao rezultate u korist Smarty 3. |
Sad se i ne sećam da li sam probao na PHP 5.3 ili je bio onaj 5.2.11 ... nedavno sam stavio novi PHP ali se ne sećam da li je to bilo pre testiranja ili posle testiranja.
Odlučio sam da ne stavljam Smarty 3 dok se ne reše svi bug-ovi (koji još nisu pronađeni), odnosno čekam da Smarty community "doradi" to da može da se stavi na live server. |
@mb_sa: ajde postuj negde templejte, pa da probamo...
|
@ivanhoe
testirao sam na jednoj web stranici koju sam skoro radio. template mogu povaditi i obajviti, ali racunam da to nije dovoljno, jer bi trebalo se zezati sa tabelom, testnim podacima i selectom. Uglavnom, bio je najobicniji template koji korisiti section i date_format. Radilo se o 15 redova iz baze. U naredni dan-dva cu uraditi neki 'standalone' test, zapakovacu sve (tabele, testne podatke, php fajl i template), pa cu se javiti da uporedimo. |
Po zadnjim rezultatima Smarty 2 je dva do tri puta brzi.
Test (mysql tabela, php fajl, template, smart 2 i smarty3, rezultati) se moze skinuti sa: http://rapidshare.com/files/30140859...arty3.rar.html TESTNO OKRUŽENJE WinXP SP2 PHP Version 5.2.3 with eAccelerator v0.9.5.1 Mysql Server version: 5.0.45-community-nt-log (Client API version 5.0.37) Apache/2.2.4 (Win32) SMARTY 2 nekompajliran template: 1. ucitavanje: 11.0 ms 2. ucitavanje: 10.2 ms 3. ucitavanje: 11.0 ms 4. ucitavanje: 12.0 ms 5. ucitavanje: 11.0 ms min: 10.2 ms max: 12.0 ms Rezultati mjereni sa Xdebugom. compile_check i force_complie setovani na 'true'. kompajliran template: 1. ucitavanje: 5.1 ms 2. ucitavanje: 5.0 ms 3. ucitavanje: 5.0 ms 4. ucitavanje: 5.2 ms 5. ucitavanje: 4.9 ms min: 4.9 ms max: 5.2 ms Rezultati mjereni sa Xdebugom. compile_check i force_complie setovani na 'false'. AB (kompajliran template) ab -n 1000 -c 100 1. time taken for test: 34.25 sec 2. time taken for test: 29.43 sec 3. time taken for test: 31.28 sec Rezultati mjereni sa Apache benchom (AB). compile_check i force_complie setovani na 'false'. SMARTY 3 nekompajliran template: 1. ucitavanje: 42.0 ms 2. ucitavanje: 60.0 ms 3. ucitavanje: 42.0 ms 4. ucitavanje: 60.0 ms 5. ucitavanje: 56.0 ms min: 42.0 ms max: 56.0 ms Rezultati mjereni sa Xdebugom. compile_check i force_complie setovani na 'true'. kompajliran template: 1. ucitavanje: 7.8 ms 2. ucitavanje: 9.2 ms 3. ucitavanje: 9.3 ms 4. ucitavanje: 9.1 ms 5. ucitavanje: 9.2 ms min: 7.8 ms max: 9.3 ms Rezultati mjereni sa Xdebugom. compile_check i force_complie setovani na 'false'. AB (kompajliran template) ab -n 1000 -c 100 1. time taken for test: 87.75 sec 2. time taken for test: 83.96 sec 3. time taken for test: 86.43 sec Rezultati mjereni sa Apache benchom (AB). compile_check i force_complie setovani na 'false'. Sum of calls (podatak u Xdebugu) je 621 za Smarty2, a za Smarty 3 je 1394. Nije relevantan podatak glede brzine, ali ipak ... |
Jos jedno poredjenje brzina, za 4 template sistema:
http://blogs.kd2.org/bohwaz/?2009/09...e-lite-vs-dwoo |
Kanda da ce proci jos malo vremena pre nego li smarty 3 izadje na videlo, ako je ceniti prema ovim testovima
|
treba biti skeptican prema ovakvim testovima, prvo sto nije neka real-life situacija testirana, drugo sto je nejasno kako je podesen server, da li ima opcode cache ili ne i sl. Sumnjam da su Monte Ohrt i ekipa bas toliki papani da su napisali novi kompajler od nule koji je sporiji, a da tek tako tvrde da je brzi 2, 3 puta...
|
^ slazem se, ali ja nisam naisao ni na jedan test koji ide u korist Smarty 3 glede brzine, dok ih ima dosta koji pokazuju da je Smarty 3 sporiji.
|
Vreme je GMT +2. Trenutno vreme je 17:52. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.