ORM test PHP frameworků – Nette, Prado

V této části našeho seriálu se zaměřím na další dva velice známé frameworky, a to Nette a Prado.
Seriál: ORM test PHP frameworků (9 dílů)
- Spouštíme letní ORM test PHP frameworků 3. 7. 2013
- ORM test PHP frameworků – CakePHP, CodeIgniter 10. 7. 2013
- ORM test PHP frameworků – DooPHP, Jelix 17. 7. 2013
- ORM test PHP frameworků – Kohana, Laravel 26. 7. 2013
- ORM test PHP frameworků – Nette, Prado 31. 7. 2013
- ORM test PHP frameworků – Qcodo, Recess 7. 8. 2013
- ORM test PHP frameworků – Seagull, Symfony 14. 8. 2013
- ORM test PHP frameworků – Yii, Zend Framework 21. 8. 2013
- ORM test PHP frameworků – PHP, závěr 28. 8. 2013
Nálepky:
Nette 2.0.8
Českého programátora jistě zaujme značně populární framework Nette, který vznikl jako projekt českého tvůrce webových aplikací v PHP. Jedná se o framework využívající MVC strukturu a objektové programování s velkým důrazem na bezpečnost aplikace. Obsahuje mnoho ladících nástrojů, které pomáhají programátorovi tvořit bezchybný kód. Pro práci s databází využívá Nette\Database, NotORM nebo Dibi knihovny, které podporují téměř všechny nejpoužívanější databázové formáty. Práce pomocí těchto knihoven je opravdu snadná a velmi rychlá. Pro návrh celé aplikace se využívá velmi srozumitelný a přehledný kód.
Vlastnosti:
- kvalitní ladící nástroje
- dobré zabezpečení
- podpora HTML 5, SEO, AJAX
- využívá objektové programování a MVC
- podpora v českém jazyce
- rychlá práce s databází
- srozumitelný a přehledný kód
- využití Nette\Database, NotORM databáze nebo Dibi
Požadavky pro použitou verzi:
- HTTP server
- PHP 5.3 (a vyšší)
Dokumentace a podpora:
Dokumentace je velice jasně a přehledně napsána a pro českého programátora je příjemná změna, že je kompletně v českém jazyce. Je v ní obsaženo veliké množství ukázek a příkladů, což velmi usnadní pochopení celkového programu. Díky velké popularitě je zde k dispozici i rozsáhlá komunita programátorů webových aplikací, kteří komunikují přes oficiální diskuzní fórum a IRC kanál dostupné na domovských stránkách. K dispozici je i stránka Planette, ve které lze nalézt mnoho ukázkových příkladů v podobě již hotových aplikací nebo podrobných návodů.
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 | 887 | 943 | 67 | 1647 | 561,2 | 223 |
2. Měření | 3000 | 891 | 963 | 69 | 1785 | 558,9 | 239 |
3. Měření | 3000 | 925 | 991 | 69 | 5303 | 554,2 | 254 |
Průměr | 3000 | 901,0 | 965,7 | 68,3 | 2911,7 | 558,1 | 238,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 | 556 | 591 | 84 | 996 | 65,5 | 154 |
2. Měření | 3000 | 586 | 626 | 96 | 1277 | 65,4 | 156 |
3. Měření | 3000 | 753 | 785 | 98 | 1561 | 50,7 | 209 |
Průměr | 3000 | 631,7 | 667,3 | 92,7 | 1278,0 | 60,5 | 173,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 | 556 | 591 | 87 | 1011 | 67,8 | 148 |
2. Měření | 3000 | 559 | 596 | 88 | 1071 | 68 | 153 |
3. Měření | 3000 | 757 | 783 | 83 | 1434 | 51,9 | 210 |
Průměr | 3000 | 624,0 | 656,7 | 86,0 | 1172,0 | 62,6 | 170,3 |
- 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 | 550 | 593 | 97 | 973 | 65,5 | 153 |
2. Měření | 3000 | 552 | 588 | 86 | 1244 | 64,9 | 146 |
3. Měření | 3000 | 735 | 769 | 93 | 1596 | 50,4 | 205 |
Průměr | 3000 | 612,3 | 650,0 | 92,0 | 1271,0 | 60,3 | 168,0 |
- 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 | 719 | 687 | 68 | 1311 | 232,4 | 186 |
2. Měření | 12000 | 523 | 552 | 43 | 926 | 67,3 | 163 |
3. Měření | 12000 | 922 | 896 | 68 | 1977 | 178,3 | 256 |
Průměr | 12000 | 721,3 | 711,7 | 59,7 | 1404,7 | 159,3 | 201,7 |
Grafické znázornění:
PRADO 3.2.1
Název PRADO vznikl jako zkratka z anglického „PHP Rapid Application Development Object-oriented“, což vystihuje jeho základní vlastnosti, a to rychlý vývoj objektově orientovaných aplikací pomocí programovacího skriptovacího jazyka PHP. Rychlý vývoj samostatného projektu je podporován množstvím již implementovaných funkcí a nástrojů. Jedním z nich je například zabudovaná možnost pro autorizaci nebo autentifikaci, která je velice stabilní a připravená k okamžitému použití nebo užitečné validační funkce kontrolující správnost získávaných dat. Aplikace jsou řízeny pomocí událostí a používají komponentový přístup. Také využívají asynchronní funkce JavaSriptu a XML, neboli AJAX, díky kterému je stránka schopná měnit svůj obsah bez nutnosti obnovování a tím zrychlit interaktivnost s uživatelem.
Vlastnosti:
- možnost různých přístupů k databázi
- rychlý vývoj aplikace
- obsahuje validační funkce
- využívá XML
- zabudovaná možnost autentifikace a autorizace
- využívá AJAX
Požadavky pro použitou verzi:
- HTTP server
- PHP 5.3.3 (a vyšší)
- Databáze SQLite, MySQL …
Dokumentace a podpora:
Celý framework je velmi dobře zdokumentován a obsahuje různé podpůrné zdroje. V jedné části se dokumentace zabývá prvními kroky a podrobnou výukou vývoje aplikace a v druhé je zaměřena na detailnější vysvětlení jednotlivých funkcí a struktury. Na domovských stránkách jsou k dispozici i výuková videa a ukázkové aplikace. Samozřejmě je zde obsaženo diskuzní fórum sloužící pro komunikaci s ostatními programátory a řešení specifických problémů.
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 | 12826 | 12923 | 900 | 13722 | 74,96 | 810 |
2. Měření | 3000 | 12907 | 12712 | 1045 | 17463 | 74,4 | 1079 |
3. Měření | 3000 | 13315 | 12979 | 1004 | 22633 | 72,2 | 1927 |
Průměr | 3000 | 13016,0 | 12871,3 | 983,0 | 17939,3 | 73,9 | 1272,0 |
- 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 | 973 | 1032 | 117 | 1428 | 17,98 | 220 |
2. Měření | 3000 | 970 | 1018 | 130 | 1921 | 18 | 206 |
3. Měření | 3000 | 956 | 1009 | 122 | 1518 | 18,3 | 214 |
Průměr | 3000 | 966,3 | 1019,7 | 123,0 | 1622,3 | 18,1 | 213,3 |
- 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 | 980 | 1034 | 122 | 1463 | 17,86 | 221 |
2. Měření | 3000 | 976 | 1034 | 112 | 1588 | 18,1 | 218 |
3. Měření | 3000 | 967 | 1019 | 123 | 1419 | 18,1 | 212 |
Průměr | 3000 | 974,3 | 1029,0 | 119,0 | 1490,0 | 18,0 | 217,0 |
- 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 | 984 | 1035 | 115 | 1517 | 17,88 | 214 |
2. Měření | 3000 | 958 | 1007 | 119 | 1447 | 18,3 | 209 |
3. Měření | 3000 | 953 | 1006 | 131 | 1458 | 18,3 | 216 |
Průměr | 3000 | 965,0 | 1016,0 | 121,7 | 1474,0 | 18,2 | 213,0 |
- 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 | 4031 | 1097 | 154 | 14776 | 63,2 | 5188 |
2. Měření | 12000 | 4028 | 1064 | 124 | 14856 | 63,1 | 5230 |
3. Měření | 12000 | 5018 | 1421 | 136 | 25050 | 50,7 | 6781 |
Průměr | 12000 | 4359,0 | 1194,0 | 138,0 | 18227,3 | 59,0 | 5733,0 |
Grafické znázornění:
No co je tohle za oslavnou ódu? Nette je líná (update skoro za sekundu? wtf?) a nepřehledná herka bez použitelné dokumentace. Že to je v češtině je zlo, neboť to pak používá málo lidí a vývoj trpí. Další problém je, že kus je anglicky, kus česky, a když pak něco člověk hledá, tak se musí ptát googla nadvakrát.
Řekl bych, že to záleží hlavně na úhlu pohledu. Já jsem se učil s každým frameworkem od začátku a zrovna Nette se mi velmi líbilo .
To že může být při nějakém použití pomalejší může být pravda, ale zrovna v tomto testu si vedlo velice dobře.
„vedlo si velice dobře“ – koukáme oba na stejný test? Podle výsledků ( a to se testuje pouze simple DB query ) je nette „2“ nejpomalejší z 8 testovaných. Nechtěl bych vidět složitější testování, tam by nette asi úplně pohořelo.
Co se týče dokumentace, tak bohužel musím souhlasit s názorem „pepci“.
V této situaci nemohu s Vámi nic než souhlasit.
V porovnání s již zveřejněnými výsledky testů patří mezi pomalejší, ale v celkovém hodnocení se jeho výsledky pohybují v té lepší polovině (viz další díly).
Bolo by dobre uverejnit pre kazdy framework testovany kod, napr. na Githube.
To chce klid. Jak už bylo řečeno, jedná se o neúplný seznam náhodně seřazených PHP frameworků. Grafy nic neříkají, nedávájí takto smysl. V běžné aplikaci jsou odpovědi v ms, když něco trvá > 1s tak je potřeba pátrat, ale je úplně jedno, který ze zmíněných FW používáte – rozdíly FW jsou marginální oproti tomu, jak drasticky lze zprasit model, perzistenci dat apod.
Zdroják zřejmě v posledním tažení zveřejňuje semestrální práce studentů, hlavně že je nový článek, který obsahuje ta správná klíčová slova.
Oficialna dokumentacia je podla mna na dobrej urovni, ale je pravda, ze v minulosti tomu celkom tak nebolo.
V minulosti tomu tak vobec nebolo. Najlepsie bolo, ked priklady z dokumentacie v realnom skusani ani vobec nefungovali.
Naprosto souhlasím s názorem „pepci“ a pavla.s, dokumentace je dle mého názoru to nejslabší na Nette vůbec.
WTF? Zmíněno NotORM a Dibi, ale primární Nette\Database ne? To autor mohl zmínit Doctrine a asi 100 dalších databázových knihoven. Co tedy bylo k testu použito?
To ani sam autor nevie ;-)
Jsem rád, že jste upozornil na další chybějící informaci v článku.
V testu byla použita Nette\Database a zapomněl jsem ji zmínit, děkuji Vám.
Pokial nie su zverejnene zdrojove kody k testom povazujem tieto vysledky za FAKE
Tak třeba autor bral celkový čas aplikace nikoliv pouze provedení daného insertu/update/.. což samozřejmě na lokále, kde se přegeneruje kontajner, šablony atd. potom by testy byly naprosto zcestné samozřejmě. A v opačném případě, pokud šlo o čas daného insertu/update/… pak to je test rychlosti Nette/Database, nikoliv ostatních komponent a i zde je potřeba zmínit, že na vývoji je časová režije, jelikož se mohou vytahovat relace z databáze, a další…
>> …využívají asynchronní funkce JavaSriptu a XML, neboli AJAX, díky kterému je stránka schopná měnit svůj obsah bez nutnosti obnovování a tím zrychlit interaktivnost s uživatelem…
Tenhle článek má zcela nesmyslný název, zato obsahuje naprosto nulové množství jakýchkoliv informací.
V minulém testu byla u Kohany jako vlastnost uvedena BSD licence. Pokud je mi dobře známo, tak Nette je distribuováno pod NewBSD licencí.
Proč je to uvedeno u jednoho frameworku jako vlastnost a u druhého ne? Jaké mají informace uváděné ve vlastnostech smysl? To je prostě nějaký výcuc informací, na které autor náhodou narazil?
Zatím to vypadá, že jedinné, co je alespoň trochu relevantní, jsou testy, které začnou dávat „smysl“, až budou zobrazeny všechny frameworky v jedné tabulkce.
Nechci hanit práci, kterou si s tím autor dává, ale chybí ji koncept a smysluplnost.
Je pravda, že je zde vypsáno malé množství vlastností jednotlivých frameworků a některé jsou uvedeny jen u některých. Ale protože jsem nechtěl zkoumat veškeré podrobnosti, tak jsem do výčtu uvedl pouze vlastnosti, na které upozorňují autoři FW(jsou uvedeny jako hlavní na domovských www).
Uznávám, že tento fakt měl být někde zdůrazněn a že takto to může působit jako chaotické vybrání náhodných vlastností.
Inac, trochu mimo temy, co vam blbne server, ze dnes rano som mal vsetky diskusne prispevky po precitani ako precitane, cez obed pribudli nejake ako neprecitane, cize som to kukol a dnes vecer zase vsetky ako neprecitane. A to sa deje pravidelne. U mna nic nemazem (ani cookies, ani historiu).
mám stejný problém, ale myslel jsem, že to je způsobeno tím, že se připojuji hlavně přes mobilní prohlížeč.