@wookieb nie chciałem wrzucać kodu i robić OT jeśli nie byłoby zainteresowania, wątek co by nie powiedzieć dotyczy frameworków. Przyznaję rację: benchmark bez podawania kodu, środowiska, konfiguracji nie jest szczególnie wiarygodny.
W tym teście są proste zpaytania, zwykłe inserty bez bindowania. Chciałem porównać to samo zapytanie na własnej maszynie, aby mieć pogląd. W necie spotyka się trochę benchmarków, jednak dość różne wyniki.
Np:
http://dealnews.com/developers/php-mysql.htmlSelect:
extension req/s
------------------------
mysqli 164
mysql 162
PDO 88
mysqli (prepared) 86
PDO (prepared) 81
Insert:
extension time
--------------------------
pdo (extended) 18.17s
mysqli (extended) 18.40s
mysql (extended) 18.46s
pdo (prepared) 25.04s
mysqli (prepared) 36.93s
mysqli 50.43s
mysql 53.09s
pdo 59.96s
Różnice są pomiędzy insert/select, przy prepared.
Aby osiągnąć konkretne, dające się porównać wyniki należałoby wykorzystać rzeczywistą sytuację - jakąś małą aplikcję w wersjach różniących się tylko silnikiem bazy. Zrobić kilka powtórzeń po X k zapytań w serii, uśrednić wyniki. Na razie mi się po prostu nie chce

no i nie mam pod ręką projektu z bardziej złożonymi zapytaniami, dającego się łatwo przepisać na inny silnik bazy.
Do testów wykorzystałem część projektu PHP MySQL Benchmark Tool (PMBT v. 0.2), i po drobnych modyfikacjach moje zapytania wyglądały tak:
// INSERT Testing ***************************************************************
//Timer Start
$startarray = explode(" ", $starttime); $starttime = $startarray[1] + $startarray[0];
// Insert Rows
$insertQuery = "INSERT INTO `$dbName`.`$tableName` (`id` ,`testcolumn`)VALUES (NULL , 'teststuff')";
for ($i = 0 ; $i < $totalIters ; $i++ ){
mysqli_query($linkDBTest, $insertQuery);
// echo "$i Insert<br>";
}
// Get run time for display
$endarray = explode(" ", $endtime); $endtime = $endarray[1] + $endarray[0];
$totaltime = $endtime - $starttime;
$totaltime = round($totaltime,5
); $IPS = round($totalIters/$totaltime); echo "$totalIters inserts in $totaltime seconds or <h2><strong><font color=\"green\">$IPS</font></strong> inserts per second.</h2>";
$dns = 'mysql:dbname='.$dbName.';host=localhost';
$pdo = new PDO($dns, 'root', '');
// INSERT Testing ************************************************************
//Timer Start
$startarray = explode(" ", $starttime); $starttime = $startarray[1] + $startarray[0];
// Insert Rows
$insertQuery = "INSERT INTO `$dbName`.`$tableName` (`id` ,`testcolumn`)VALUES (NULL , 'teststuff')";
for ($i = 0 ; $i < $totalIters ; $i++ ){
$pdo->exec($insertQuery);
// echo "$i Insert<br>";
}
// Get run time for display
$endarray = explode(" ", $endtime); $endtime = $endarray[1] + $endarray[0];
$totaltime = $endtime - $starttime;
$totaltime = round($totaltime,5
); $IPS = round($totalIters/$totaltime); echo "$totalIters inserts in $totaltime seconds or <h2><strong><font color=\"green\">$IPS</font></strong> inserts per second.</h2> ";