Benchmarking PHP - for vs. foreach
Estuve realizando algunos benchmarking para verificar la velocidad de dos funciones en php:
<======== START ========>
Fecha: 11/09/2008 06:35:47 pm
Total foreach con 10 de registros
Tiempo 0.000790119171143 segundos
<======== END ========>
<======== START ========>
Fecha: 11/09/2008 06:35:50 pm
Total for con 10 de registros
Tiempo 0.000819206237793 segundos
<======== END ========>
<======== START ========>
Fecha: 11/09/2008 06:35:52 pm
Total foreach con 10 de registros
Tiempo 0.000815868377686 segundos
<======== END ========>
Resultados con un array de 1000 valores
<======== START ========>
Fecha: 11/09/2008 06:04:03 pm
Total for con 1000 de registros
Tiempo 0.00167894363403 segundos
<======== END ========>
<======== START ========>
Fecha: 11/09/2008 06:04:14 pm
Total for con 1000 de registros
Tiempo 0.00171494483948 segundos
<======== END ========>
<======== START ========>
Fecha: 11/09/2008 06:04:17 pm
Total foreach con 1000 de registros
Tiempo 0.00117588043213 segundos
<======== END ========>
Resultados con un valor de 100000 valores
<======== START ========>
Fecha: 11/09/2008 06:09:29 pm
Total for con 100000 de registros
Tiempo 0.0560779571533 segundos
<======== END ========>
Conclusión: Parece ser que la función for se desenvuelve mejor con arreglos más pequeños, mientras que la función foreach tiene mejor rendimiento con valores grandes.
Saludos ...
- for
- foreach
function benchmark($type, $new = null) {
$vars = range(1, 1000);
$file = 'var/bench_array.txt';
if ($new == 1){
$fp = fopen($file, 'w');
fclose($fp);
}
Benchmark::startBenchmark($file);
switch($type) {
case 'for':
for ($i = 0; $i < count($vars); $i++);
Benchmark::pushLog('Total for con ' . count($vars) . ' de registros' . "\n", $file);
break;
case 'foreach':
foreach ($vars as $k => $v);
Benchmark::pushLog('Total foreach con ' . count($vars) . ' de registros' . "\n", $file);
break;
}
Benchmark::endBenchmark($file);
$content = file_get_contents($file);
print Console_Color::convert("%y{$content}%n");
}
Resultados con un array de 10 valores
<======== START ========> Fecha: 11/09/2008 06:35:43 pm Total for con 10 de registros Tiempo 0.000509977340698 segundos <======== END ========>
<======== START ========> Fecha: 11/09/2008 06:04:01 pm Total foreach con 1000 de registros Tiempo 0.000850200653076 segundos <======== END ========>
<======== START ========> Fecha: 11/09/2008 06:09:26 pm Total foreach con 100000 de registros Tiempo 0.0221240520477 segundos <======== END ========>

Enviar un comentario nuevo