Malý benchmark PHP frameworků Zend a Core
V příštím roce mě čeká redesign portálu Výletník.cz, a proto začínám zjišťovat, který PHP framework by se na tento projekt nejlépe hodil.
Pro začátek jsem se rozhodl srovnat výkon dvou frameworků: Zend a Core.
Že Core ještě neznáte? Ani nemůžete. Je to totiž můj vlastní šílený výplod, který stále ještě není hotov. Původně vychází z MVC frameworku Joea Stumpa, ale z původního kódu se relativně v celku zachoval pouze controller.
Pár frků o Core:
- MVC s dispatcher view
- ActiveRecord
- Request - odstínění od HTTP, dvousměrný router
- vícejazyčný (locales)
- cachování výstupu
- logování chyb
- autoloading tříd
Framework Zend asi představovat nemusím.
Jako testovací případ jsem zvolil lehce upravený úkazkový případ práce se Zendem. Případ je sice jen velmi jednoduchý ale pro základní test to snad stačí.
V testu jsem se zaměřil na dvě klasické veličiny: čas a alokace paměti. Nejprve jsem měření provedl přímo v php skriptech, následně i pomocí jmeteru. U jmeteru jsem simuloval takovouto zátěž:
- 10 uživatelů (vláken)
- start dalšího vlákna po 2s (ramp time 20s)
- každé vlákno 20 GET dotazů na úvodní stránku
Výsledky
Výsledky pouze potvrdily, čeho jsem se už na začátku bál - Zend je bez cachování velmi časově i paměťově náročný.
- | Zend | Core |
---|---|---|
čas měřený v php [sec] | 0,2166 | 0,0361 |
alokace paměti (peak) [kB] | 2780 | 565 |
průměrný čas z jmeteru [sec] | 1,109 | 0,135 |
maximální čas z jmeteru [sec] | 2,750 | 0,266 |
includovaných souborů | 60 | 21 |
Za správnost měření neručím. Zend neumím - pouze jsem tupě opsal vzorový příklad, takže je dost možné, že stačí nějaká malá úprava a výkon se zvýší. Cachování jsem v testu naschvál nepoužil.