DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Smarty 3 (http://www.devprotalk.com/showthread.php?t=7936)

bluesman 05. 10. 2009. 18:28

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:

  • PHP5 OO design
  • SPEED
  • Object Chaining
  • Exception Error Handling
  • Assigned Data Objects
  • Multiple Template Objects
  • Static Object Access
  • Pure PHP Template Option
  • Powerful Parser/Lexer
  • Tons of Template Syntax Enhancements
  • Improved Data Scoping Features
  • Variable Filters (ie. auto-html-escape)
  • In-template Functions (easy recursion)
  • Template Inheritance
  • PHP Streams Support (per template/variable/include)
  • Smart javascript/css handling (no more {literal} tags)
  • Improved Cache handling (per template/variable/function)
  • Many other things too numerous!

Ja sam probao tu alfu, skinuo sam i postavio, medjutim pocela je da mi prijavljuje puno gresaka, tako da je očigledno da prelaz sa Smarty 2 na Smarty 3 neće biti jednostavan, naročito ako ste "proširivali" smarty svojim funkcijama.

ivanhoe 05. 10. 2009. 19:27

cool, vec sam mislio da je smarty razvoj potpuno umro

bluesman 05. 10. 2009. 19:35

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.

bluesman 06. 10. 2009. 00:22

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.

bluesman 06. 10. 2009. 02:25

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)

ivanhoe 06. 10. 2009. 04:59

tjah, a ja bas navikao da koristim {section} za ispis podataka iz baze..

bluesman 06. 10. 2009. 11:43

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 ();

holodoc 06. 10. 2009. 13:57

Citat:

Originalno napisao bluesman (Napišite 73847)
To je isto kao što vidiš danas milijardu PHP programera

Litar "Knjaza" za izvor ove informacije pa možda proslavimo i sa nečim žestokim kao recimo ruskim kvasom :D

bluesman 06. 10. 2009. 16:08

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.

robi-bobi 06. 10. 2009. 21:50

Kôd:

To je isto kao što vidiš danas <span class="hiperbola">mnogo</span> PHP programera ...

holodoc 06. 10. 2009. 22:11

Citat:

Originalno napisao robi-bobi (Napišite 73864)
Kôd:

To je isto kao što vidiš danas <span class="hiperbola">mnogo</span> PHP programera ...

Aha, hiperbola je znači nešto kao ovo :D
Kôd:

a:hover {
        visibility:hidden;
}
To je isto kao što vidiš danas <a href="autor">milijardu</a> PHP programera!


mb_sa 06. 10. 2009. 23:43

Citat:

Originalno napisao bluesman (Napišite 73839)
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)

Kao prvo hvala na informacijama koji si podijelo.

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.

robi-bobi 07. 10. 2009. 00:47

hiperbola
i prestajem da mucim temu

citam s interesovanjem i hvala za info

bluesman 07. 10. 2009. 03:04

Citat:

Originalno napisao mb_sa (Napišite 73866)
Kao prvo hvala na informacijama koji si podijelo.

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.

Radi se o jednostavnim template, malo listanja recorda iz baze, ništa fensi, nema ni keširanja ni bilo čega sličnog.

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.

bluesman 16. 10. 2009. 02:39

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

bluesman 31. 10. 2009. 20:43

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.

mb_sa 01. 11. 2009. 00:20

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

bluesman 01. 11. 2009. 01:43

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š?

mb_sa 01. 11. 2009. 09:30

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.

bluesman 01. 11. 2009. 14:25

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.

ivanhoe 01. 11. 2009. 14:29

@mb_sa: ajde postuj negde templejte, pa da probamo...

mb_sa 01. 11. 2009. 14:57

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

mb_sa 02. 11. 2009. 16:43

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

MorenoArdohain 29. 12. 2009. 12:07

Jos jedno poredjenje brzina, za 4 template sistema:
http://blogs.kd2.org/bohwaz/?2009/09...e-lite-vs-dwoo

DakiPro 30. 12. 2009. 09:21

Kanda da ce proci jos malo vremena pre nego li smarty 3 izadje na videlo, ako je ceniti prema ovim testovima

ivanhoe 30. 12. 2009. 13:42

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

mb_sa 01. 01. 2010. 20:03

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

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.