ORM test PHP frameworků – PHP, závěr

Poslední díl celého seriálu zaměřeného na testování rychlosti PHP frameworků při komunikaci s databází. V této části jsou obsaženy výsledky projektu vytvořeného pomocí čistého PHP. A na závěr hromadné shrnutí všech naměřených výsledků.

Seriál: ORM test PHP frameworků (9 dílů)

  1. Spouštíme letní ORM test PHP frameworků 3.7.2013
  2. ORM test PHP frameworků – CakePHP, CodeIgniter 10.7.2013
  3. ORM test PHP frameworků – DooPHP, Jelix 17.7.2013
  4. ORM test PHP frameworků – Kohana, Laravel 26.7.2013
  5. ORM test PHP frameworků – Nette, Prado 31.7.2013
  6. ORM test PHP frameworků – Qcodo, Recess 7.8.2013
  7. ORM test PHP frameworků – Seagull, Symfony 14.8.2013
  8. ORM test PHP frameworků – Yii, Zend Framework 21.8.2013
  9. ORM test PHP frameworků – PHP, závěr 28.8.2013

PHP

PHP je programovací skriptovací jazyk určený zejména pro tvorbu dynamických webových stránek. Ve své kompilované podobě jej lze i využít pro tvorbu desktopových aplikací. Využívá objektově orientované programování, což umožňuje návrh složitějších struktur celé aplikace. Velice užitečné je i dynamické typování jednotlivých proměnných a jejich automatická deklarace.

Vlastnosti:

  • využívá dynamické typování
  • pole jsou asociativní
  • používá proměnné s různou viditelností pro ostatní kód
  • umožňuje objektově orientované programování

Výsledky testů:

  • Test výběr (SELECT)
Test Požadavků Průměr [ms] Medián [ms] Min  [ms] Max [ms] Prům. rychlost [KB/s] Odchylka [ms]
1. Měření 3000 32 32 6 126 2522,9 15
2. Měření 3000 37 35 6 147 2571,2 18
3. Měření 3000 34 33 6 178 2436,6 17
Průměr 3000 34,3 33,3 6,0 150,3 2510,2 16,7

 

  • Test vložení (INSERT)
Test Požadavků Průměr [ms] Medián [ms] Min  [ms] Max [ms] Prům. rychlost [KB/s] Odchylka [ms]
1. Měření 3000 83 80 39 506 47,5 39
2. Měření 3000 85 81 39 424 50,3 32
3. Měření 3000 104 89 40 489 41,6 61
Průměr 3000 90,7 83,3 39,3 473,0 46,5 44,0

 

  • Test úprava (UPDATE)
Test Požadavků Průměr [ms] Medián [ms] Min  [ms] Max [ms] Prům. rychlost [KB/s] Odchylka [ms]
1. Měření 3000 84 80 40 393 44,6 35
2. Měření 3000 87 81 45 323 49,5 30
3. Měření 3000 84 80 41 473 42,5 39
Průměr 3000 85,0 80,3 42,0 396,3 45,5 34,7

 

  • Test smazání (DELETE)
Test Požadavků Průměr [ms] Medián [ms] Min  [ms] Max [ms] Prům. rychlost [KB/s] Odchylka [ms]
1. Měření 3000 86 79 41 557 43,4 54
2. Měření 3000 90 82 41 501 49,1 39
3. Měření 3000 109 90 52 453 41,8 50
Průměr 3000 95,0 83,7 44,7 503,7 44,8 47,7

 

  • Test vše zároveň (ALL)
Test Požadavků Průměr [ms] Medián [ms] Min  [ms] Max [ms] Prům. rychlost [KB/s] Odchylka [ms]
1. Měření 12000 73 75 5 422 940,8 41
2. Měření 12000 77 79 5 576 1058,4 47
3. Měření 12000 75 78 6 387 779 41
Průměr 12000 75,0 77,3 5,3 461,7 926,1 43,0

 

Grafické znázornění:

PHP grafy

Celkové výsledky

Jak bylo zmíněno v úvodu a znázorněno v ukázkách předchozích testů, byly měřeny různé hodnoty, ze kterých jsou asi nejdůležitější právě graficky znázorněná průměrná rychlost odezvy a průměrná rychlost přenosu dat. Právě tyto dvě hodnoty poukazují na rychlost celkového frameworku v projektech, které se snažily simulovat chování jednoduché aplikace při zátěži podobné reálnému provozu.

V následujících grafech lze vidět názorné shrnutí výsledků všech 15 otestovaných aplikací v závislosti na výsledných hodnotách průměrné odezvy (červené sloupce) a průměrné rychlosti (zelené sloupce). V grafech jsou použity výsledky získané ze všech tří měření přepočítané do jejich průměrné hodnoty.

1.  Test výběr (SELECT)

Graf 1 - Vyhodnocení testu výběru

2.  Test vložení (INSERT)

Graf 2 - Vyhodnocení testu vložení

3.  Test úprava (UPDATE)

Graf 3 - Vyhodnocení testu úpravy

4.  Test smazání (DELETE)

Graf 4 - Vyhodnocení testu odstranění

 5.  Test vše zároveň (ALL)

Graf 5 - Vyhodnocení souhrnného testu

Vyhodnocení výsledků

Z takto naměřených údajů lze vyčíst, že nejrychlejší projekt je napsaný pomocí čistého PHP. Tento výsledek  byl předvídatelný, protože tato aplikace neobsahuje žádné dodatečné funkce nebo složitější strukturu, které by omezovaly její výkon.

Nejlepších výsledků dosahuje framework DooPHP. Jeho velmi rychlé zpracování požadavků je způsobeno úsporným navržením základního jádra, které je možné rozšiřovat o další funkcionalitu. Při zasílání jednoduchých příkazů pro databázi využívá pouze základní funkce a jednoduchý model, což má pozitivní vliv na celkovou rychlost. Podobnou strukturu používají frameworky Jelix nebo CodeIgniter.

Framework Kohana dosahuje také velmi dobrých výsledků, ale je stále pomalejší než CodeIgniter, od kterého je odvozena. To může být způsobeno přidáním většího množství kontrolních funkcí k základní struktuře nebo využíváním rozdílných databázových knihoven.

Nejdelší odezvy byly naměřeny u projektů vytvořených frameworky Prado a Symfony. Oba tyto projekty jsou zaměřeny spíše na rychlý vývoj robustní aplikace s velice rozsáhlou funkcionalitou. Z tohoto důvodu musejí být i pro jednoduchou webovou stránku importovány rozsáhlé knihovny funkcí, které jsou sice užitečné, ale snižují celkovou rychlost aplikace.

Na základě těchto výsledků nelze určit, který framework je nejrychlejší nebo nejlepší. Celý tento test slouží spíše k orientačnímu přehledu a srovnání v určitých podmínkách. Také nechci tvrdit, že tento test je naprosto přesný, protože jak bylo psáno v úvodu, tak jsem se se všemi jednotlivými projekty učil od naprostých začátků a je samozřejmě nemožné se s nimi za takovou krátkou dobu a s takovým počtem naučit dokonale.

Také by někdo mohl namítat, že nebyly otestovány všechny verze, nebo byly zahrnuty starší verze, než jsou k dispozici nyní. Nicméně toto srovnávání trvalo nějaký čas a za tu dobu byly samozřejmě vydány i nová rozšíření nebo celé nové verze některých frameworků.

Samozřejmě výběr frameworku závisí na zkušenostech nebo vkusu programátora.

Závěr

Tento test nevznikl jen z důvodu nedostatku takovýchto porovnání, ale také z důvodu, že já sám jsem si chtěl vybrat nějaký framework pro svůj budoucí projekt. Osobně bych volil framework Jelix, a to nejen kvůli jeho výsledkům, ale také proto, že se mi s ním pracovalo asi nejlépe.

Doufám, že tento srovnávací test pomůže alespoň pár ostatním programátorům webových aplikací, nebo usnadní výběr při rozhodování pro nováčky v oblasti PHP frameworků.

Student magisterského oboru Informační technologie na TUL. Jeho hlavní zálibou je programování webových aplikací nebo programů pro počítače a telefony. Oblíbené jazyky C#, Java, PHP. Velmi rád se učí novým věcem a nedokáže se od projektu odpoutat, dokud není dokončen. Pokud zrovna nepracuje vyráží na pěší výlety nebo na kolečkové brusle.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 14

Přehled komentářů

pepca Zdrojáky
Jaroslav Jakoubě Re: Zdrojáky
pepca Re: Zdrojáky
janek :)
frosty22 Re: :)
vaclav.sir :-D
petr.kaluz zend framework
Jaroslav Jakoubě Re: zend framework
Jan Pobořil Důležitost rychlosti
Petr Prchal Re: Důležitost rychlosti
karlos Re: Důležitost rychlosti
tomas.fejfar Web Framework Benchmarks
Jan Prachař Re: Web Framework Benchmarks
Konrad perfektni ukazka, jak se to nema delat
Zdroj: https://www.zdrojak.cz/?p=8857