Citation :Je proposais de faire ça plutôt :
Code PHP :<?php
for( $i = 0; $i++ < ITERATIONS;) {
$vv = 10000000;
$k = 'rien trouvé';
foreach( $a as $c => &$v )
houla oui tout à fait, j'ai vraiment fait mon test à l'arrache ( enfin bon, c'est difficile aussi de se forcer à faire des trucs pas opti ^^ )
Je n'avais aps compris que tu parlais des initialisations de variables dans ton post précédent.
Pour le test fonctionnel qui est meilleur en second, je pense tout simplement qu'il bénéficie de l'initialisation préalable des variables et du cache du tableau. Après je connais pas assez le fonctionnement interne de PHP pour m'avancer plus là dessus !
mais du coup le système foreach/if se prend une méga branlée :
Code :
temps d'execution avec foreach : 4.0745539665222
indice trouvé: mais_tg
temps d'execution avec les fonctions : 2.2728538513184
indice trouvé: mais_tg
faites le test plusieurs fois
Code PHP :
<?php
header("Content-type: text/plain; charset=utf-8");
#header("Content-type: text/plain");
$a = array(
'bonjour' => 50,
'salut' => 350,
'hello' => 504,
'gutentag' => 5350,
'hola' => 502,
'hi_baby' => 500,
'yo_man' => 520,
'mais_tg' => 5
);
define( 'ITERATIONS', 1000000);
$t0 = microtime( true );
# ALGO 2
for( $i = 0; $i++ < ITERATIONS;) {
$vv = 10000000;
$k = 'rien trouvé';
foreach( $a as $c => &$v )
if( $v < $vv) {
$k = $c;
$vv = $v;
}
}
#
$t1 = microtime( true );
echo 'temps d\'execution avec foreach : ', ( $t1 - $t0), PHP_EOL, 'indice trouvé: ', $k;
echo PHP_EOL;
$t0 = microtime( true );
# ALGO 1
for( $i = 0; $i++ < ITERATIONS;)
$k = array_search( min($a), $a, true);
#
$t1 = microtime( true );
echo 'temps d\'execution avec les fonctions : ', ( $t1 - $t0), PHP_EOL, 'indice trouvé: ', $k;