Porovnání rychlosti sedmi PHP frameworků
U PHP frameworků hraje roli mnoho faktorů – od snadnosti práce po bezpečnost, a rychlost je jen jedním z nich, upozorňuje článek na Server-Side Magazine. Autoři porovnali těchto sedm frameworků:
- Cakephp-1.3.7: http://cakephp.org/
- CodeIgniter2.0.0: http://codeigniter.com/
- Symfony 2: http://www.symfony-project.org/
- yii-1.1.6.r2877: http://www.yiiframework.com/
- RainFramework 2.3: http://www.rainframework.com/
- Doophp 1.4.1: http://www.doophp.com/
- Kohana-3.1: http://kohanaframework.org/
A který že byl nejrychlejší a který nejpomalejší? Dozvíte se v odkázaném článku 7 PHP Frameworks Tested For Speed. A nezapomeňte: nezáleží jen na rychlosti, taková podpora či stabilita může být mnohem důležitějším faktorem!
Jistě nejsem sám, koho by zajímaly výsledky Nette. Provedl jsem proto vlastní měření a vyšla mi poměrně překvapivá čísla:
„none“ je samotný PHP skript. Nette jsem testoval tak, že jsem vzal aktuální vývojovou verzi, použil minimalizovanou verzi Nette, vyrobil prezenter
Hello
a šablonuHello/default.latte
a zapnul produkční režim. Testoval jsem pod Windows v PHP 5.3 bez akcelerátoru. Výsledky mě překvapily, protože Nette má pověst jednoho z nejrychlejších frameworků, takže jsem jen možná něco udělal špatně.Dále by mě zajímaly výsledky Zend Frameworku, ale do toho jsem se nepouštěl.
dvě poznámky k Tvému testu
– žádný framework v testu nepoužívá minifikovanou verzi
– Win nejsou moc relevantní pro testování rychlosti php aplikace, zejména pokud použiješ windowsí apache.
Nevím, jak moc jsou minifikované verze u ostatních frameworků běžné a jestli vůbec existují. U Nette je tato verze přímo součástí distribuce a zcela běžně se používá, proto jsem použil ji.
Relativní poměr rychlostí vypadal na Windows dost podobně jako u originálního testu, takže jsou výsledky myslím relevantní. Nicméně si rád prohlédnu i výsledky z Linuxu.
Mě jednou překvapilo číslo 452.
Díky za test, jen dvě otázky bych měl:
1. Zkusils porovnat rychlost minifikované a obyčejné verze?
2. Nechceš dát „test suite“ někam ke stažení? :)
1. Obyčejná verze mi proběhla za 4687.290 ms. Bez akcelerátoru je autoloading na Hello World rychlejší.
2. helloperf-nette.zip rozbalit k původnímu testu.
Nespravil si nahodou zakladnu chybu – pri prvom rq Nette kompiluje sablony a RoborLoader si buduje cache, je preto velmi pomaly!
Ne, před spuštěním testu jsem si aplikaci nejprve spustil samotnou, takže už všechno bylo vytvořené. Test jsem navíc spustil dvakrát a první výsledek jsem ignoroval. Zkoušel jsi to spustit taky?
U mna velmi vyrovnane:
bez APC
s APC
A nefailují ty frameworky (error 500)? Pokud ano, tak to asi není reprezentativní měření. Já to neumístil přímo do rootu a dopadlo to podobně.
Žádnou chybu nehlásí, každý jsem před spuštěním testu vyzkoušel (v jednom jsem musel cestu opravit).
To je dobře, ale já reagoval na srigiho – jeho výsledky napovídají, že by tomu tak mohlo být.
Ano svoje meranie som zmrvil. Tu je oprava:
wo/APC
w/APC
Snazil som sa o co najobjektivnejsi test, cize system v klude, ziadne pootvarane app. Pred testom som overil appky samostatne. Arch Linux 32b. 2.6.38, PHP 5.3.6.
Takyto test ma ale jednu zakladnu nevyhodu – testovany server zaroven kladie rq’s. Vhodnejsie by bolo rq’s posielat z inej masiny po 1Gb sieti.
To se mi nezda, hello world ti dava 15req/s v plain php? Ja si pamatuju na widlich s rozhasenym apachem cisla okolo 300req/s.
“ Výsledky mě překvapily, protože Nette má pověst jednoho z nejrychlejších frameworků, takže jsem jen možná něco udělal špatně.“
Alebo jeho povest klame :)
No jednak nechapu jak mohl autor puvodniho testu na Nette zapomenout a druhak se jiste brzo ukaze, ze testy jsou zamerne a se zlym umyslem napsane tak, aby v nich Nette propadlo :)
Nette byl rychlik ve verzi < 1 . Nová verze bohuzel takova neni.
Jakube, nemohl by jsi udělat test se starší verzí Nette? Např. 0.9.3. Možná došlo vzhledem k vlně neustálých novinek ke zpomalení. Díky.
Proč tu chybí Zend? U něho by bylo zajímavé vidět výsledky takového molocha, proti ostatním frameworkům…
[ironie]Zend jsme sem nedali schválně, protože jsme proti němu zaujatí, nadržujeme ostatním, fuj, hanba, cenzura…[/ironie]
Vysvětlení je prosté: Zend Framework v originálním testu nebyl, proto není zmíněn ani ve zprávičce. Jakub Vrána otestoval Nette „navíc“. Jestli máte možnost zkusit testy se Zendem, udělejte to a hoďte sem, prosím, výsledky. Jen jednu poznámku – Zend není takový „moloch“, jak jeho 60MB instalace naznačuje – většina z toho jsou knihovny, které na sobě nejsou nijak závislé, a když je nepotřebujete použít, nepoužijete je (a prostě je vyhodíte). Samotné jádro ZF („minimální funkční verze“) je poměrně malé…
[cit]Samotné jádro ZF („minimální funkční verze“) je poměrně malé…[/cit]
Pomerne malé voči čomu? :o)
Kedze sa zda, ze benchmark citatelov zaujima, pretestoval som este raz vsetko poriadne. Doplnil som Nette 0.9, Zend (quickstart) a Yii som aktualizoval. Nette 2 som pouzil alphu zo stranok, nie git clone! V oboch nette pripadoch som pouzil neminifikovane libky a prod. mod. Prod. mod som kontroloval aj pre Zende. Tu su vysledky:
wo/APC
w/APC
Takže pokud mně zrak neklame, tak Nette je jedním z nejpomalejších frameworků vůbec. Hmm…
Tak je vidiet, ze povest Nette ako jedneho z najrychlejsich frameworkov je naozaj len povest a nie pravda :)
takéto porovnania výkonu v PHP ajtak nemajú zmysel v PHP nejde o výkon ale o jednoduchosť tvorby aplikácií, PHP je samo o sebe extrémne pomalé. kto chce zo svojho serveru vyťažiť maximum určite použije rýchlejšiu technológiu http://www.wrensoft.com/zoom/benchmarks.html
Právě jsem narazil na tohle srovnání. Jednak díky za otestování Nette, díky němu jsem odhalil pomalé místo při ověřování safe-mode, ve verzi 0.9.7 jsem je opravil a nyní je značně rychlejší.
Testovaná verze 2.0 alpha ještě nebyla optimalizovaná pro výkon, třeba s verzí z dnešního dne dostanete časy takřka poloviční. Ke stažení helloperf-nette2.zip
Obecně ale test výkonnosti aplikace, která nedělá nic, není příliš vypovídající, protože to není typická aplikace, která by se ve frameworku programovala a pro kterou by byl optimalizován. A jen pro zajímavost, frameworky používající jmenné prostory jsou (bohužel) znevýhodněny, protože namespaces snižují výkon. Pokud použijete Nette pro PHP 5.2, automaticky zaznamenáte nárůst výkonu cca o 10 %.
Přesně tak, byl bych pro vymyslet jednoduché zadání aplikace.. otestovat všechny zmíněné aplikace a zdrojáky hodit na GIT, aby každý viděl ( mohl rejpat ) jak je to napsané.
Pak bychom viděli zkutečně objektivní čas.