Přejít k navigační liště

Zdroják » Zprávičky » Porovnání rychlosti sedmi PHP frameworků

Porovnání rychlosti sedmi PHP frameworků

Zprávičky PHP, Různé

Nálepky:

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ů:

  1. Cakephp-1.3.7: http://c­akephp.org/
  2. CodeIgniter2.0­.0: http://co­deigniter.com/
  3. Symfony 2: http://www­.symfony-project.org/
  4. yii-1.1.6.r2877: http­://www.yiifra­mework.com/
  5. RainFramework 2.3: http://w­ww.rainframewor­k.com/
  6. Doophp 1.4.1: http://w­ww.doophp.com/
  7. Kohana-3.1: http://k­ohanaframewor­k.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!

Komentáře

Subscribe
Upozornit na
guest
27 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Jakub Vrána

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 156.244
  • Nette 7405.966
  • doophp 843.718
  • rainframework 593.727
  • yii 1687.436
  • kohana 2609.275
  • cakephp 5921.685
  • CodeIgniter 1515.577
  • Symfony 8124.740

„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 šablonu Hello/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.

optik

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.

Jakub Vrána

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.

neron

Mě jednou překvapilo číslo 452.

Jakub Vrána

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.

Srigi

Nespravil si nahodou zakladnu chybu – pri prvom rq Nette kompiluje sablony a RoborLoader si buduje cache, je preto velmi pomaly!

Jakub Vrána

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?

Srigi

U mna velmi vyrovnane:

bez APC

none          14.326
Nette         13.200
doophp        14.824
rainframework 14.575
yii           17.432
kohana        15.181
cakephp       14.971
CodeIgniter   13.657
Symfony 2     15.952

s APC

none          13.588
Nette         15.496
doophp        14.578
rainframework 16.415
yii           18.892
kohana        18.128
cakephp       18.813
CodeIgniter   15.088
Symfony       13.015
v6ak

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

Jakub Vrána

Žádnou chybu nehlásí, každý jsem před spuštěním testu vyzkoušel (v jednom jsem musel cestu opravit).

v6ak

To je dobře, ale já reagoval na srigiho – jeho výsledky napovídají, že by tomu tak mohlo být.

Srigi

Ano svoje meranie som zmrvil. Tu je oprava:

wo/APC

none              29.514
Nette 2           3537.387
doophp 1.4.1      337.711
rainframework 2.3 280.921
yii-1.1.6.r2877   532.583
kohana-3.1        723.010
cakephp-1.3.7     1669.585
CodeIgniter_2.0.0 566.404
Symfony 2         24887.005

w/APC

none              30.487
Nette 2           1081.690
doophp 1.4.1      62.511
rainframework 2.3 101.114
yii-1.1.6.r2877   163.107
kohana-3.1        516.864
cakephp-1.3.7     1317.480
CodeIgniter_2.0.0 177.441
Symfony 2         426.269

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.

Jerry12

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.

Hmmm

“ 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 :)

neron

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

Karel

Nette byl rychlik ve verzi < 1 . Nová verze bohuzel takova neni.

Naith

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.

Pooky

Proč tu chybí Zend? U něho by bylo zajímavé vidět výsledky takového molocha, proti ostatním frameworkům…

Finta

[cit]Samotné jádro ZF („minimální funkční verze“) je poměrně malé…[/cit]

Pomerne malé voči čomu? :o)

Srigi

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

none                17.262
Cakephp 1.3.7       2236.631
CodeIgniter 2.0.0   569.503
Doophp 1.4.1        348.143
Kohana 3.1          801.600
Nette 0.9           2017.477
Nette 2             2245.103
Rainframework 2.3   311.383
Symfony 2           1002.677
Yii 1.1.7           582.079
Zend 1.11.5         1727.325

w/APC

none                23.128
Cakephp 1.3.7       698.224
CodeIgniter 2.0.0   187.072
Doophp 1.4.1        55.962
Kohana 3.1          360.620
Nette 0.9           1149.804
Nette 2             1589.467
Rainframework 2.3   86.386
Symfony 2           627.312
Yii 1.1.7           158.320
Zend 1.11.5         1103.840
Naith

Takže pokud mně zrak neklame, tak Nette je jedním z nejpomalejších frameworků vůbec. Hmm…

Hmmm

Tak je vidiet, ze povest Nette ako jedneho z najrychlejsich frameworkov je naozaj len povest a nie pravda :)

blizz

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

David Grudl

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

klikatá

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.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.