Edit report at http://bugs.php.net/bug.php?id=53482&edit=1
ID: 53482 Updated by: [email protected] Reported by: iradu at unix-world dot org Summary: Mysqli Object use is much slower than Mysqli procedural use -Status: Open +Status: Bogus Type: Bug Package: MySQLi related Operating System: Any PHP Version: 5.3.3 -Block user comment: N +Block user comment: Y Private report: N New Comment: Please stick to the point (no dumbness considerations), avoid posting big scripts and please indent them properly so they're legible. Your test is also flawed because you use microtime() instead of microtime(true). I'd say it's possible object use is *marginally* slower than procedural use, but you haven't shown even that. If you still find procedural use is significantly faster (> 10%), you can submit a new bug report, but please follow the guidelines above. Thank you. Previous Comments: ------------------------------------------------------------------------ [2010-12-06 11:40:42] iradu at unix-world dot org 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. ------------------------------------------------------------------------ [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
