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

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

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

Články PHP

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

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

Komentáře

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

Jsou někde k dostání zdrojáky benchmarku, které všecko spustí a vygenerují mi ty grafy znovu a znovu? Chci mít možnost si to porovnat s vlastním frameworkem a hledat optimalizace, které různé frameworky mají.

pepca

A proč nesáhneš po záložní kopii a nenahraješ to sem z ní?

janek

Skutečně mě fascinuje zoufalost redakce, že má odvahu zveřejnit takový blábol. Poslední díl jen podtrhuje celý seriál.

Dokonce nechybí ani perlička na závěr a vítězem testu frameworků se stalo čisté PHP, bravo :D

Ovšem ty zdůvodnění a závěry, proč ten který fw dopadl jak dopadl…. to je opravdu vrchol. Nic tak odfláknutého a amatérského jsem dlouho neviděl.

Znovu žádám redakci, aby před článek přidala výrazné upozornění, že se jedná pouze o seznam náhodně seřazených php frameworků a hlavně začátečníci by ho v žádném případě neměli číst, neboť hrozí výrazné uvedení v omyl.

frosty22

To je pravda .. mnohem užitečnější by bylo, kdyby autor porovnával, jak se mu s každým frameworkem pracovalo, jak rychle se s ní dokázal základy naučit, co bylo pro a proti – a vést porovnávání tímto směrem.

Porovnávání rychlostí frameworku nemá žádný význam – jak je psáno v závěru „Tento test nevznikl jen z důvodu nedostatku takovýchto porovnání“ – důvod proč jich je nedostatek je ten, že se to nedá takto srovnávat a zvláště opera s databází – to se netestuje rychlost frameworku, ale pouze některé z jejích komponent pro práci s databázi a to i dost frameworků jich má několik.

A vybírat ještě framework podle tohoto testu? Víceméně všechny dopadli výkonostně stejně – ty rozdíly nikoho nezajímají – mnohem důležitější je:

– komunita kolem frameworku
– má nástroje, které k danému projektu potřebuju
– jsou pro něj doplňky, které mi ušetří práci
– budu pracovat s kolegy, který již nějaké FW umí
– … atd..

A už jen poslední věc – rychlost PHP vs. databáze, alespoň tady mohla být uvedena zda se jednalo o testování PDO, nebo nativní funkční mysql_* …

vaclav.sir

Na Rootu mají pro pobavení komix, na Zdrojáku test PHP frameworků.

petr.kaluz

jedna se o ZF1 nebo ZF2 ? dik

Jan Pobořil

Nechci tady nadávat na autora, chápu jeho motivaci dodat srovnání, které chybí. Pokud se to bere ve správném kontextu a nedělá se z toho hledání nej frameworku, tak to tady má své místo. V článku to je napsáno, ale někteří by to nepochpili ani kdyby to bylo v pruhovaném rámečku s velkým nápisem POZOR.

Ohledně rychlosti, neměla by se přeceňovat. V dnešní době je výpočetní výkon stále levnější a lidé dražší. A nepředpokládá se, zle by se to někdy mělo obrátit. U drtivé většiny projektů je tedy mnohem výhodnější to napsat rychle než výkonně. Je opravdu jen velmi málo projektů, kde by přímo výkon frameworku hrál zásadní roli.

Já například používám Drupal, protože se v něm vyvíjí velmi rychle a při využití všech možností cachování ani moc nežere. Co z toho, že při vypnuté cache potřebuje na jeden pageview nad 100 dotazů na databázi?

Petr Prchal

Vy budete taky mistr sveho remesla.. Samozrejme, ze zalezi na rychlosti (ano, pracuju na velkem projektu, ne nepouzivame PHP), v momente, kdy vasi aplikaci zacne pouzivat vice lidi vsadte se, ze vykon budete resit, pokud to neni staticka stranka.

Problem tohoto skvostneho serialu neni ani tak v tematu, ale ve zpracovani, v tom, ze se meri ORM a v testech ani napsano, co za ORM je pouzito, to ze testovani je totalne nesmyslne, nikdo nepotrebuje jednoduchy select a neukaze se tak optimalizacni sila ORM a dalsich tisic veci…

BTW: Drupal neni framework ale CMS…

karlos

drupal uz delsi dobu lze povazovat spis za framework a s prichodem osmicky to bude 100% pravda (symfony2 naspodku).

Fajn, delas na velikananskem projektu kde nemuzes vyuzit cachovani. Kolik takovych za rok delas?

Navic zrovna takovy test za jak dlouho projde SQL prikaz nevypovida VUBEC NIC.

Tomáš Fejfar

Je čas opět připomenout, jak se to případně MÁ dělat:

http://www.techempower.com/benchmarks/#section=intro&hw=i7&test=db

Jan Prachař

Přesně tak, bylo by mnohem smysluplnější udělat pull requesty pro chybějící frameworky do tohoto projektu. Navíc údajně nejrychlejší framework Phalcon zde na Zdrojáku chybí.
http://www.techempower.com/benchmarks/#section=data-r6&hw=i7&test=json&l=sg

Konrad

ty zavery mne taky bavi:
– „Na základě těchto výsledků nelze určit, který framework je nejrychlejší nebo nejlepší.“ – Tak proc tolik energie a prace?
– „… k srovnání v určitých podmínkách …“ – Spis neurcite.

Ten zaver sice hodne vysvetluje (polehcujici okolnost), ale asi spis bych to zaradil jako osobni blog s nazvem ‚Jak jsem si vybral framewirk‘, nez seriozne tvarici se clanek.
Myslim, ze v tom pripade tech ostrych a negativnich reakci hodne ubylo. A naopak, mozna by padlo vic navrhu, poznamek, poznatku …

Ale jinak fajn lehke ctivo na leto :)

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.