19-08-2007, 10:33 AM
Voici un petit batch qui fonctionne bien:
Code PHP :
<?php
//Initialisation du random (les microsecondes sont une valeur donnée au millionnième -> Multiplier par 1 million pour avoir un entier!
srand((double)microtime()*1000000);
mt_ srand((double)microtime()*1000000);
//Test de 1.000.000 randomization sur une plage définie
$START = time();
for ($i = 1; $i < 1000000; ++$i) {
$j = rand(1,100);
}
$END = time() - $START;
echo "1.000.000 rand(x,y) : $END secondes\n";
$START = time();
for ($i = 1; $i < 1000000; ++$i) {
$j = mt_rand(1,100);
}
$END = time() - $START;
echo "1.000.000 mt_rand(x,y) = $END secondes\n";
//Test de 1.000.000 randomization sur une plage indéfinie
$START = time();
for ($i = 1; $i < 1000000; ++$i) {
$j = rand(1,10000000);
}
$END = time() - $START;
echo "1.000.000 rand() : $END secondes\n";
$START = time();
for ($i = 1; $i < 1000000; ++$i) {
$j = mt_rand(1,10000000);
}
$END = time() - $START;
echo "1.000.000 mt_rand() : $END secondes\n";
?>
J'obtiens un mt_rand environ 55% plus rapide que le rand classique.
Par contre, il faudra prendre en compte toutes les actions intermédiaires (accès BD??? Calculs??? Traitement des infos dans des tableaux???) qui prennent également du temps (surtout la BD)!!!!!