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

Zdroják » PHP » ORM test PHP frameworků – Nette, Prado

ORM test PHP frameworků – Nette, Prado

Články PHP

V této části našeho seriálu se zaměřím na další dva velice známé frameworky, a to Nette a Prado.

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í:

Nette grafy

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í:

Prado grafy

Komentáře

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

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.

pavel.s

„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“.

Jakub Polák

Bolo by dobre uverejnit pre kazdy framework testovany kod, napr. na Githube.

janek

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.

Jakub Polák

Oficialna dokumentacia je podla mna na dobrej urovni, ale je pravda, ze v minulosti tomu celkom tak nebolo.

Hmm

V minulosti tomu tak vobec nebolo. Najlepsie bolo, ked priklady z dokumentacie v realnom skusani ani vobec nefungovali.

Jan Jíša

Naprosto souhlasím s názorem „pepci“ a pavla.s, dokumentace je dle mého názoru to nejslabší na Nette vůbec.

Robert Jelen

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?

BB

To ani sam autor nevie ;-)

David

Pokial nie su zverejnene zdrojove kody k testom povazujem tieto vysledky za FAKE

frosty22

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ší…

Moist

>> …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í.

bene

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.

kaktuss

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

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.