DB abstrakcijas leijeri
Veicu testus ar dažiem datubāžu abstrakcijas leijeriem. Testa būtība bija vienkārša - pieslēdzamies DB (mysql šai gadījumā), atlasām 10 ierakstus, ciklā tos nolasām, atslēdzamies no DB. Ar katru draiveri/klasi to veicu 10 identiskus testus ar 5 minūtes ilgu pauzi starp katru no tiem. Katrā testā šīs darbības norādītajā secībā tika atkārtotas 1000 reizes.
PEAR DB
Lai arī morāli novecojis, šo izmantoju ieraduma pēc. Testēju gan mysql gan mysqli draiverus.
PEAR MDB2
Rekomendētākais DB abstrakcijas veids.
PDO_mysql
Runā, ka iekš PHP 5.1 PDO būs iekšā. PHP dabistiskais DB abstrakcijas veids.
ADOdb
Lielās ar to, ka ir pats ātrākais datubāžu abstrakcijas leijeris. Diemžēl, nepiedāvā iespēju izmantot tik ļoti ierasto objektu notāciju, operējot ar rezultātu laukiem.
mysql_* un mysqli_*
Jautrībai paņēmu un palaidu šo visu arīdzan ar iebūvētajām mysql/mysqli funkcijām.
Testos izpalika Zend freimworka datubāžu adapteri (PDO_mysql un mysqli), jo tie nestrādāja (pie atslēgšanās no DB PHP mira ar segfaultiem, bet pie pieslēgšanās jamais lamājās par nespēju piekļūt protected īpašībām).
Šiem testiem ir tikai teorētiska un tīri karmiska nozīme. Mili un mikrosekundēs mērāmā starpība ir absolūti nenozīmīga WEB aplikācijām. Tiem, kam ātrums ir svarīgs, attiecīgās vietas jau nu nebūs iekš PHP. Un galu galā - lētāk ir iegādāties vēl vienu serveri, nekā cīnīties par nieka sekundes daļām, lai beigu beigās jebkurā gadījumā nāktos iegādāties vēl vienu serveri. Labi, nu jau 80% no servera.
Protams, ka lēnākais ir arī vecākais - PEAR DB (izmantojot mysql draiveri). Amizanti, bet faktiski tik pat ātrs (3% lēnāks) ir MDB2. 10% ieguvuma, salīdzinot ar PEAR DB mysql, iegūsti, izmantojot to pašu PEAR DB, tikai ar mysqli. Bet tie, kam ir PHP5, var priecāties par PDO_mysql, jo viņiem tas strādās vidēji par 23% ātrāk, nekā PEAR DB mysql.
Papildināts ar ADOdb. Ātrdarbība tāda pati, kā PDO mysql un mysqli (konkrētajā gadījumā - par 2% ātrāks par pirmo un par 1% lēnāks, nekā otrais). Ne sūda. Nokļūdījos. Ātrdarbība ir par 10% labāka, nekā tā ir PEAR DB mysql. Faktiski tāda pati, kā PEAR DB mysqli.
Ā. Nuja. PHP 5.2.3 (laists caur CLI, ne apaci), DB uz citas kastes. Gan klienta, gan servera versija ir 5.0.26.
Tabuliņa ar mērījumiem (katra testa izpildes laiks sekundēs):
PEAR DB mysql
PEAR DB mysqli
PEAR MDB2
PDO mysql
ADOdb
mysql
mysqli
10,60
9,68
10,43
8,80
9,05
9,47
8,36
10,97
10,24
10,83
8,24
8,94
9,10
8,02
10,25
9,28
9,91
7,72
9,07
7,87
7,11
9,22
8,38
9,35
7,62
9,23
7,79
7,28
9,68
8,73
9,76
7,66
9,17
8,61
7,68
10,71
9,99
10,48
7,96
8,99
8,64
7,64
10,03
9,49
9,37
8,34
10,15
8,98
7,34
11,36
9,512
10,77
7,97
9,53
8,47
7,70
11,33
9,52
10,64
8,40
9,63
9,53
7,99
10,23
8,94
10,12
7,58
9,95
8,61
7,94
Vidējā (aritmētiskā) vērtība
10,44
9,38
10,17
8,03
9,37
8,71
7,71
% no maksimālā izpildes laika
100%
90%
97%
77%
90%
83%
74%
% no minimālā izpildes laika (ja tā vienkāršāk saprast)
135%
122%
132%
104%
122%
113%
100%
asdf
2007. gada 29. jūnijā, plkst. 15:05
Hmm un ADOdb?
laacz Autors
2007. gada 29. jūnijā, plkst. 15:32
asdf, lūdzu.
Sandy
2007. gada 29. jūnijā, plkst. 15:32
Laacz noslinkoja :) asdf un vispaar, kursh tad to lieto, tikai kaut kadiem hibriidrisinaajumiem:)
laacz Autors
2007. gada 29. jūnijā, plkst. 15:33
Sandy, adodb bija spēcīgs php4 laikos. Tagad, kad tuvojās php5+, PDO jamo pogā ārā. Ātrums tāds pats, bet funkcionalitāte PDO ir labāka. Pieņemu, ka Adodb varētu būt ātrs extensijas formā, bet tā ir pieejama tikai uz win (vismaz es neatradu linux variantu)
laacz Autors
2007. gada 29. jūnijā, plkst. 15:47
OK. Par ekstensiju nokļūdījos. Tā anyway ir kā addons (aizvieto konkrētas koda daļas ar C kodu)
Danaki
2007. gada 29. jūnijā, plkst. 18:07
Возьми еще ADODB_lite и Propel, который часть Simfony.
laacz Autors
2007. gada 29. jūnijā, plkst. 18:31
Danaki, propel nav gluži salīdzināms ar manis minētajiem. Propel ir kaut kas vairāk. ADOdb_lite ir diezgan maz - 3-4% ātrāks nekā ADOdb vulgaris.
actek
2007. gada 2. jūlijā, plkst. 19:14
propel jau ir ORM, bet Creole (tas verķis kas sēdēja apakšā propelim) gan pie šitiem testiem derētu.
arī salīdzinājums ar testiem, grafikiem un orķestri starp propel un ezpdo būtu interesanti palasīt :)
Danaki
2007. gada 3. jūlijā, plkst. 11:34
Ну да, 3-4%, нафиг его тогда вобще писать надо было? Посмотри бенчи http://adodblite.sourceforge.net/benchmark.php.
Danaki
2007. gada 3. jūlijā, plkst. 11:36
actek, раз сравнивать ORM, тогда уж лучше сразу фреймворки, типа CakePHP против Symfony.
TrusisBannijs
2007. gada 3. jūlijā, plkst. 20:43
būtu interesanti salīdzināt ar java bāzētiem rīkiem, Hibernate vai Toplink