Bug #53482 [Com]: Mysqli Object use is much slower than Mysqli procedural use

From: Date: Mon, 06 Dec 2010 10:40:43 +0000
Subject: Bug #53482 [Com]: Mysqli Object use is much slower than Mysqli procedural use
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-156787@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=53482&edit=1 ID: 53482 Comment by: iradu at unix-world dot org Reported by: iradu at unix-world dot org Summary: Mysqli Object use is much slower than Mysqli procedural use Status: Open Type: Bug Package: MySQLi related Operating System: Any PHP Version: 5.3.3 Block user comment: N Private report: N New Comment: Procedural: test 1: 0.4619922161 test 2: 0.4763075113 test 3: 0.43635993 Object: test 1: 0.4942417717 test 2: 0.4999971008 test 3: 0.498214469 Procedural wins 3 of 4 tests, object oriented wins 1 of 4 tests. Post what you think about all this. Previous Comments: ------------------------------------------------------------------------ [2010-12-06 11:34:29] iradu at unix-world dot org Description: ------------ mysqli_query() is MUCH MUCH FASTER than mysqli::query() also MySQL PDO sucks as PDO is for dumb developers. Test script: --------------- ==== OBJECT STYLE: <?php echo 'object:<br>'; for($y=0;$y<10;++$y){ $mtime='';$starttime='';$isql=array();$mysqli='';$i=1;$query='';$array=array();$result='';$row=array(); $mtime = explode(' ',microtime());$mtime = (float)$mtime[1] + (float)$mtime[0];$starttime = $mtime; include 'isett.iphp'; $mysqli=new mysqli($isql['h'],$isql['u'],$isql['p'],$isql['d']); if(mysqli_connect_errno()) die('Connection Error '.mysqli_connect_errno().' : '.mysqli_connect_error()); $mysqli->set_charset('utf8'); $mysqli->query("CREATE TABLE IF NOT EXISTS persad_dsa (id SMALLINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,a_name VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,a_desc VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,PRIMARY KEY(id))ENGINE=MYISAM"); for($i=1;$i<2000;++$i){ $mysqli->query('INSERT INTO persad_dsa (a_name,a_desc) VALUES(\'=+=+=+=+=+'.($i+1000).'+=+=+=+=+=\',\'------------------------------------------------'.($i+321).'-------\')'); } $query="SELECT * FROM persad_dsa"; if($result=$mysqli->query($query)){ while($row=$result->fetch_assoc()){ $array[]='|-'.$row['id'].'|'.$row['a_name'].'|'.$row['a_desc'].'-|'; } $result->close(); } $mysqli->query("DROP TABLE IF EXISTS persad_dsa"); $mysqli->close(); $mtime = explode(' ',microtime());$mtime = (float)$mtime[1] + (float)$mtime[0];echo $mtime-$starttime.'<br>'; $mtime='';$starttime='';$isql=array();$mysqli='';$i=1;$query='';$array=array();$result='';$row=array(); } echo '---<br>procedural:<br>'; for($y=0;$y<10;++$y){ $mtime='';$starttime='';$isql=array();$mysqli='';$i=1;$query='';$array=array();$result='';$row=array(); $mtime = explode(' ',microtime());$mtime = (float)$mtime[1] + (float)$mtime[0];$starttime = $mtime; include 'isett.iphp'; $mysqli=mysqli_connect($isql['h'],$isql['u'],$isql['p'],$isql['d']); if(mysqli_connect_errno()) die('Connection Error '.mysqli_connect_errno().' : '.mysqli_connect_error()); mysqli_set_charset($mysqli,'utf8'); mysqli_query($mysqli,"CREATE TABLE IF NOT EXISTS persad_dsa (id SMALLINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,a_name VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,a_desc VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,PRIMARY KEY(id))ENGINE=MYISAM"); for($i=1;$i<2000;++$i){ mysqli_query($mysqli,'INSERT INTO persad_dsa (a_name,a_desc) VALUES(\'=+=+=+=+=+'.($i+1000).'+=+=+=+=+=\',\'------------------------------------------------'.($i+321).'-------\')'); } $query="SELECT * FROM persad_dsa"; if($result=mysqli_query($mysqli,$query)){ while($row=mysqli_fetch_assoc($result)){ $array[]='|-'.$row['id'].'|'.$row['a_name'].'|'.$row['a_desc'].'-|'; } mysqli_free_result($result); } mysqli_query($mysqli,"DROP TABLE IF EXISTS persad_dsa"); mysqli_close($mysqli); $mtime = explode(' ',microtime());$mtime = (float)$mtime[1] + (float)$mtime[0];echo $mtime-$starttime.'<br>'; $mtime='';$starttime='';$isql=array();$mysqli='';$i=1;$query='';$array=array();$result='';$row=array(); } ?> //==== PROCEDURAL STYLE <?php echo 'procedural:<br>'; for($y=0;$y<10;++$y){ $mtime='';$starttime='';$isql=array();$mysqli='';$i=1;$query='';$array=array();$result='';$row=array(); $mtime = explode(' ',microtime());$mtime = (float)$mtime[1] + (float)$mtime[0];$starttime = $mtime; include 'isett.iphp'; $mysqli=mysqli_connect($isql['h'],$isql['u'],$isql['p'],$isql['d']); if(mysqli_connect_errno()) die('Connection Error '.mysqli_connect_errno().' : '.mysqli_connect_error()); mysqli_set_charset($mysqli,'utf8'); mysqli_query($mysqli,"CREATE TABLE IF NOT EXISTS persad_dsa (id SMALLINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,a_name VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,a_desc VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,PRIMARY KEY(id))ENGINE=MYISAM"); for($i=1;$i<2000;++$i){ mysqli_query($mysqli,'INSERT INTO persad_dsa (a_name,a_desc) VALUES(\'=+=+=+=+=+'.($i+1000).'+=+=+=+=+=\',\'------------------------------------------------'.($i+321).'-------\')'); } $query="SELECT * FROM persad_dsa"; if($result=mysqli_query($mysqli,$query)){ while($row=mysqli_fetch_assoc($result)){ $array[]='|-'.$row['id'].'|'.$row['a_name'].'|'.$row['a_desc'].'-|'; } mysqli_free_result($result); } mysqli_query($mysqli,"DROP TABLE IF EXISTS persad_dsa"); mysqli_close($mysqli); $mtime = explode(' ',microtime());$mtime = (float)$mtime[1] + (float)$mtime[0];echo $mtime-$starttime.'<br>'; $mtime='';$starttime='';$isql=array();$mysqli='';$i=1;$query='';$array=array();$result='';$row=array(); } echo '---<br>object:<br>'; for($y=0;$y<10;++$y){ $mtime='';$starttime='';$isql=array();$mysqli='';$i=1;$query='';$array=array();$result='';$row=array(); $mtime = explode(' ',microtime());$mtime = (float)$mtime[1] + (float)$mtime[0];$starttime = $mtime; include 'isett.iphp'; $mysqli=new mysqli($isql['h'],$isql['u'],$isql['p'],$isql['d']); if(mysqli_connect_errno()) die('Connection Error '.mysqli_connect_errno().' : '.mysqli_connect_error()); $mysqli->set_charset('utf8'); $mysqli->query("CREATE TABLE IF NOT EXISTS persad_dsa (id SMALLINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,a_name VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,a_desc VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,PRIMARY KEY(id))ENGINE=MYISAM"); for($i=1;$i<2000;++$i){ $mysqli->query('INSERT INTO persad_dsa (a_name,a_desc) VALUES(\'=+=+=+=+=+'.($i+1000).'+=+=+=+=+=\',\'------------------------------------------------'.($i+321).'-------\')'); } $query="SELECT * FROM persad_dsa"; if($result=$mysqli->query($query)){ while($row=$result->fetch_assoc()){ $array[]='|-'.$row['id'].'|'.$row['a_name'].'|'.$row['a_desc'].'-|'; } $result->close(); } $mysqli->query("DROP TABLE IF EXISTS persad_dsa"); $mysqli->close(); $mtime = explode(' ',microtime());$mtime = (float)$mtime[1] + (float)$mtime[0];echo $mtime-$starttime.'<br>'; $mtime='';$starttime='';$isql=array();$mysqli='';$i=1;$query='';$array=array();$result='';$row=array(); } ?> //==== Expected result: ---------------- PHP 5.3 is going in a wrong direction dudes ! Actual result: -------------- I can't predict ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=53482&edit=1

« previous php.bugs (#156787) next »