Ver Mensaje Individual
  #14 (permalink)  
Antiguo 05/01/2003, 10:33
Avatar de SpiceMan
SpiceMan
 
Fecha de Ingreso: noviembre-2002
Mensajes: 160
Antigüedad: 21 años, 5 meses
Puntos: 0
yo tenía mal el código (calculaba el tiempo con una variable mal porque habia escrito $empezofor en vez de $empezoFor).

Código PHP:
<?php

for ($i 0$i 10000$i++) { $array[$i] = $i;}

function 
microtime_diff($a$b) {
    list(
$a_dec$a_sec) = explode(" "$a);
    list(
$b_dec$b_sec) = explode(" "$b);
    return 
$b_sec $a_sec $b_dec $a_dec;
}

function 
ejecutarFor() {
    global 
$array;
    
$copia $array;
    for (
$i=0$i 10$i++) { for ($i 0$i 10000$i++) { $copia[$i]++; } }
}

function 
ejecutarForeach() {
    global 
$array;
    
$copia $array;
    for (
$i=0$i 10$i++) { foreach ($copia as $key => $value) { $copia[$key]++; } }
}
$empezoFor microtime();
ejecutarFor();
$lapsoFor microtime_diff($empezoFormicrotime());


$empezoForeach microtime();
ejecutarForeach();
$lapsoForeach microtime_diff($empezoForeachmicrotime());
echo 
"<br><br><b>Tiempos</b>:<br><br>\n";
printf("for: %0.3f segundos<br>\n"$lapsoFor);
printf("foreach: %0.3f segundos<br>\n"$lapsoForeach);
?>
Con este código me da:


Tiempos:
for: 0.060 segundos
foreach: 0.984 segundos


reemplazando

foreach ($copia as $key => $value) { $copia[$key]++; }
por
foreach ($copia as $value) {$copia[$value]++; }


Tiempos:
for: 0.067 segundos
foreach: 0.977 segundos

parece no haber diferencia, habría que testearlo bien con un array asociativo con todas las de la ley.

Última edición por SpiceMan; 09/01/2003 a las 18:51