Ver Mensaje Individual
  #13 (permalink)  
Antiguo 04/01/2003, 21:21
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Spiceman .. para los test de for() y foreach() te faltó poner el código de los test.

Yo hice los mios (aprovechando y usando tus fuciones sobre microtime):

Código PHP:
<?php
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;
}

$array=Array(1,2,3,4,5,6,7);

echo 
"<b>Tiempos</b>:<br><br>\n";

$empezo_foreach microtime();
foreach (
$array as $valor){
}

$lapso_foreach microtime_diff($empezo_foreachmicrotime());
printf("foreach: %0.8f segundos<br>\n"$lapso_foreach);

reset($array);

$empezo_for microtime();
for (
$i=0$i<= count($array); $i++){
}

$lapso_for microtime_diff($empezo_formicrotime());
printf("for: %0.8f segundos<br>\n"$lapso_for);


?>
Como se observa en el for .. uso count() para obtener el total de elementos del array .. Simulando lo que hace exactamente el forecha() a la hora de "parar" de leer el array cuando llega al final del último elemento.

No uso funciones para el codio a testear (he de ahí parte de los resultado y su resusltados .. pero la comparativa sirve igual).

Los resultados fueron (en tres iteracciones consecutivas):
foreach: 0.00025300 segundos
for: 0.00047600 segundos

foreach: 0.00024300 segundos
for: 0.00054600 segundos

foreach: 0.00025300 segundos
for: 0.00046200 segundos

Usando para el caso de test del for:
Código PHP:
$empezo_for microtime();
$total_array=count($array);
for (
$i=0$i<= $total_array$i++){

Los resultados fueron (en tres iteracciones consecutivas):
foreach: 0.00025300 segundos
for: 0.00031600 segundos

foreach: 0.00026400 segundos
for: 0.00034200 segundos

foreach: 0.00023600 segundos
for: 0.00039800 segundos

Al sacar fuera de cada iteraccion del bucle for el count() ganamos algo de tiempo .. acercandose al foreach() ..

Conclusión (bajo mis test y el código presentado):
Gana foreach() .. tambien se ve algo mas estable en cuanto a tiempos de respuesta en cada ejecución.

Test usando:
PHP 4.3.0RC1 en Windows98.

Un saludo,