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í:
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)
2. Test vložení (INSERT)
3. Test úprava (UPDATE)
4. Test smazání (DELETE)
5. Test vše zároveň (ALL)
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ů.
Přehled komentářů