Výkon: CodeIgniter, Smarty a PHP
Poslední dobou jsem se začal zajímat o nejrůznější frameworky pro PHP. Jako nejlepší (a k tomu jsem nedospěl pouhým vlastním názorem) se jeví CodeIgniter. CodeIgniter pracuje jako MVC a je poměrně zdařile propracovaný, zároveň však nesvazuje ruce pevně danými direktivy.
Je ovšem vhodné používat v jazyku jako je PHP takto náročný MVC framework? Na jednu stranu velmi ulehčuje práci a vývoj webu je s ním opravdu pohodlný, například velmi primitivní CMS by mělo jít napsat do hodiny, nicméně vyváží se kvalita zpracování s výkonem?
Provedl jsem velice jednoduchý test. Úkolem bylo zobrazit prostou XHTML stránku, která obsahuje výpis položek z databáze. Zvolil jsem CodeIgniter s přímím voláním query, SMARTY se zapnutým kešováním a prosté PHP. K testování jsem použil ab v konfiguraci -n 1000 -c 10, což považuji za dostatečně náročné parametry.
Výskedky
- CodeIgniter obslouží 25 požadavků za sekundu
- SMARTY obslouží 90 požadavků za sekundu
- PHP obslouží 470 požadavků za sekundu
Testovací počítač byl Notebook M 1.7 Ghz, 1GB RAM s openSUSE linux OS. Přiznávám že celé tohle testování má značně amatérský nádech, ale výsledky jsou natolik rozdílné (a při opakováních se čísla shodovala), že z nich lze vyvodit alespoň nějaké závěry.
CodeIgniter bych určitě použil na malé weby (firemní prezentace), kde neočekávám enormní návštěvnost, protože díky jeho modelu extra rychlého vývoje, ušetřím mnoho času stráveného programováním. Rozhodně bych se bál ho nasadit v aplikaci s větším využitím databáze (po odstranění databáze a výpisu stránky „natvrdo“ se výsledek u CodeIgniteru pohybuje okolo 45 obsloužených požadavků za sekundu).
SMARTY samozřejmě není žádný framework, ale templejtovací systém. Do testu jsem si ho zařadil protože mě vždycky zajímalo jak je to s jeho výkonem doopravdy, na netu jsem o něm četl ledascos. Na to, že bylo zapnuté kešování a při testu byla stránka nakešovaná a zároveň bylo kromě samotné šablony všechno napsáno přímo v PHP (jako u testu samostatného PHP) je výsledek docela katastrofální. Řada lidí si vůbec neuvědomuje, že samo PHP je od základu šablonovací jazyk a že je docela zbytečné vymyslet si vlastní značky a řídící prvky, které pak musím prohnat a přeparsovat dalším kódem v PHP.
PHP bylo napsáno zcela prostě. Spojení do databáze a výpis XHTML stránky. Můj chabý notebook s pomalým diskem by podle zátěžového testu Apache dokázal obsloužit téměř 500 požadavků za sekundu.
Na závěr se musím zmínit o Ethanovi, který předem jasně odhadl jak takový test musí dopadnou. Přehnané používání tříd a DB layeru v interpretovaném jazyku je prostě na škodu a je jen otázka zda-li pohodlnost vývoje dokáže omluvit výkon. Že dojde k takové degradaci i když použiji pouze templejtovací třídu, jsme asi nečekali ani jeden.
Komentáře k textu
Rss komentářů tohoto textu - Formulář pro nový komentář
autor podle mne take zapomnel na jednu docela dulezitou vec… mluvi tam o rychlosti vyvoje, o rychlosti zpracovani jednotlivych requestu, ale uz tam uplne opomiji moznosti dalsi spravy a rozsirovani (i treba nekym jinym nez je autor)
Autor souhlasí, ani jeden z programátorů v mém okolí neznal CodeIgniter, takže pokud by v budoucnu musel aplikaci v něm napsanou rozšířit či spravovat, znamenalo by to, že by se s ním nejprve musel naučit. Ačkoliv si myslím že to se dá zvládnout za den zbytek dohledávat průběžně ve výborné dokumentaci.
Smarty je podle mého názoru až příliš složitý šablonovací systém, což se zřejmě odráží i na jeho výkonu. Osobně na jednom svém soukromém webovém projektu používám Template Power. Je velmi jednoduchý, nijak to nekomplikuje a přitom dokáže vyřešit všechno, co pro projekt potřebujete.
Myslim, ze to nejde tak snadno rozradit. Kazdemu bude vyhovovat neco krapet jineho a kazdy je necim vyjimecny.
Codeigniter je prostě pomalejší, protože provádí sadu příkazů, které ulehčí programátorovi práci, takže se mu v konečném důsledku vyplatí (třeba kontrola formulářových dat na XSS, kontrola isset pro odeslaná data a spousta dalších funkciček).
Přehnané používání tříd a DB layeru v interpretovaném jazyku je prostě na škodu
Neni pravda – nijak to nesouvisi s interpretovanosti/kompilaci jazyka. To souvisi s php a jeho per-request zpracovanim.
Nové komentáře
Martinxtr Biba Mirek Japan Kobl joshek Mirek Japan Kobl Meaglir Hodza kelif Krtek Mirek Japan KoblZpětné odkazy
google.cz chemik.org weardir.com soft-de.com oilmotorcar.com search.seznam.cz blog.vyvojar.cz google.cz google.cz google.com© Copyright 2006 - 2007, Mirek Japan Kobl | běží na RS2 | RSS | Statistika