27-01-2012, 03:58 PM
Je viens de faire une petit bench:
J'aurai souhaité monter plus mais, pour une raison que je n'ai pas encore trouvé, ma boucle ne dépasse pas 16383 (2^14 -1).
voici les sources des tests (fait sur un wamp):
1/ INSERT dans la boucle:
Citation :INSERT dans boucle :Alors, je n'ai pas lancé les 10 000 inserts individuels (sinon j'y serai encore demain...).
100 -> 3,7283s
1000 -> 43,6131s
10000 ->
INSERT après boucle :
100 -> 0,0861s
1000 -> 0,1655s
10000 -> 0,6515s
15000 -> 1,0978s
LOAD DATA INFILE :
100 -> 0,0826s
1000 -> 0,16s
10000 -> 0,6896s
15000 -> 1,0418s
J'aurai souhaité monter plus mais, pour une raison que je n'ai pas encore trouvé, ma boucle ne dépasse pas 16383 (2^14 -1).
voici les sources des tests (fait sur un wamp):
1/ INSERT dans la boucle:
Code PHP :
<?php
list($msec,$sec)=explode(' ',microtime());
$starttime=$msec+$sec;
$link = mysql_connect(BDD_HOST, BDD_USER, BDD_PASS);
if (is_resource($link)) {
if (mysql_select_db(BDD_NOM,$link)) {
mysql_query("SET NAMES 'utf8'");
}
}
$tab=array();
$maxx=10000;
$maxy=10000;
for ($i=0;$i<10000;$i++) {
$ok=false;
while (!$ok) {
$x=rand(0,$maxx);
$y=rand(0,$maxy);
if ($tab[$x+$y*$maxy]!=1) {
$tab[$x+$y*$maxy]=1;
$ok=true;
}
}
mysql_query('INSERT into jeu_localisations(galaxie,objet,loc_x,loc_y,symboles,carac) VALUES (1,1,'.$x.','.$y.',\'ABCDE\',\'{"data":"rien"}\')') or die (mysql_error());
}
list($msec2,$sec2)=explode(' ',microtime());
$endtime=$msec2+$sec2;
$duree=$endtime-$starttime;
echo "durée globale: ".round($duree,4);
2/ INSERT à la fin
Code PHP :
<?php
list($msec,$sec)=explode(' ',microtime());
$starttime=$msec+$sec;
$link = mysql_connect(BDD_HOST, BDD_USER, BDD_PASS);
if (is_resource($link)) {
if (mysql_select_db(BDD_NOM,$link)) {
mysql_query("SET NAMES 'utf8'");
}
}
$tab=array();
$maxx=10000;
$maxy=10000;
$rows=array();
for ($i=0;$i<10000;$i++) {
$ok=false;
while (!$ok) {
$x=rand(0,$maxx);
$y=rand(0,$maxy);
if ($tab[$x+$y*$maxy]!=1) {
$tab[$x+$y*$maxy]=1;
$ok=true;
}
}
$rows[]='(1,1,'.$x.','.$y.',\'ABCDE\',\'{"data":"rien"}\')';
}
mysql_query('INSERT into jeu_localisations(galaxie,objet,loc_x,loc_y,symboles,carac) VALUES '.implode(',',$rows)) or die (mysql_error());
list($msec2,$sec2)=explode(' ',microtime());
$endtime=$msec2+$sec2;
$duree=$endtime-$starttime;
echo "durée globale: ".round($duree,4);