J'ai changé l'ordre de test et j'ai obtenu un résultat différent. J'ai essayé de désactiver le cache opcode, ajouté unset, mais j'obtiens toujours un résultat différent. Pourquoi ?
$time_start = microtime(true);
$myArray = array();
for ( $i = 0; $i < 100000; ++$i )
{
$myArray[] = $i;
$myArray[] = 'test a string';
}
$time_end = microtime(true);
printf("Took %f seconds for array[]\n", $time_end - $time_start);
$time_start = microtime(true);
$myArray = array();
for ( $i = 0; $i < 100000; ++$i )
{
array_push($myArray, $i);
array_push($myArray, 'test a string');
}
$time_end = microtime(true);
printf("Took %f seconds for array_push\n", $time_end - $time_start);
A pris 0.145872 secondes pour array[] A pris 0.154502 secondes pour array_push
$time_start = microtime(true);
$myArray = array();
for ( $i = 0; $i < 100000; ++$i )
{
array_push($myArray, $i);
array_push($myArray, 'test a string');
}
$time_end = microtime(true);
printf("Took %f seconds for array_push\n", $time_end - $time_start);
$time_start = microtime(true);
$myArray = array();
for ( $i = 0; $i < 100000; ++$i )
{
$myArray[] = $i;
$myArray[] = 'test a string';
}
$time_end = microtime(true);
printf("Took %f seconds for array[]\n", $time_end - $time_start);
A pris 0.197076 secondes pour array_push A pris 0.122565 secondes pour array[]
Augmentez le nombre de tests à 500000 :
A pris 0.779719 secondes pour array[] A pris 0.757806 secondes pour array_push
A pris 1.008018 secondes pour array_push A pris 0.494230 secondes pour array[]
Si je change l'ordre des tests, la différence de vitesse est de 2X.