NotORM je rychlejší než Doctrine 2 i Dibi
27-07-2010 02:00 - Zdroj: php.vrana.cz
Patrik Votoček srovnal rychlost a paměťovou náročnost několika ORM a porovnal je s hodnotami knihovny Dibi. Bohužel do srovnání nezahrnul moji knihovnu NotORM, která se dá použít místo ORM. Naštěstí ale testovací kód publikoval, takže jsem testy mohl zopakovat a rozšířit je o NotORM. Výsledek mě po pravdě řečeno ani příliš nepřekvapil.
Čas (ms)
Testovala se rychlost provedení čtyř základních operací (metodika je popsaná v původním článku). Já jsem srovnal z mého pohledu zajímavé knihovny Dibi, Doctrine 2 a NotORM:
Knihovnaselectinsertupdatedelete
Dibi1617.242134.966428.421249.887
Doctrine 21390.539457.234755.267403.661
NotORM706.752134.887128.954160.803
Paměťová náročnost (kB)
Knihovnaselectinsertupdatedelete
Dibi6600.9724920.0874925.6324877.281
Doctrine 29439.3507056.5547102.9587005.480
NotORM10866.8554174.8094395.3364144.314
Vyšší paměťová náročnost při získávání dat je způsobena tím, že NotORM nedovoluje určit třídu objektů načítaných z databáze (vždy je to NotORM_Row). V testu se tedy nejdříve vytvoří objekt této třídy a pak objekt třídy používané v testu. V reálných podmínkách by vytváření tohoto druhého objektu bylo zbytečné.
Použitá konfigurace
PHP 5.3.2 TS VC6
Apache 2.2.15
Windows XP
MySQL 5.1.39-community
Nette Framework 1.0-dev (revision a8c51dd)
Athlon 64 X2.
Závěr
Na rychlosti a ještě spíše na paměťové náročnosti knihoven podle mě nijak zvlášť nezáleží, pokud se neliší asymptoticky. Test navíc nijak nepokrýval oblasti, ve kterých je NotORM obzvlášť silné (efektivní získávání vztahů a přenášení jen těch sloupců, které se nakonec skutečně využijí). Je ale potěšující, že zdaleka nejpříjemnější syntaxe NotORM je zároveň spojena s nejvyšší rychlostí.
Zdrojové kódy jsem publikoval na GitHubu. - Pokračovat...



