Benchmarking PHP - for vs. foreach

Estuve realizando algunos benchmarking para verificar la velocidad de dos funciones en php:
  • for
  • foreach
Aquí les dejo el código de la función que preparé y los resultados
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
&lt;======== START ========&gt;
Fecha: 11/09/2008 06:35:43 pm
Total for con 10 de registros
Tiempo 0.000509977340698 segundos
&lt;======== END ========&gt;
<======== 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
&lt;======== START ========&gt;
Fecha: 11/09/2008 06:04:01 pm
Total foreach con 1000 de registros
Tiempo 0.000850200653076 segundos
&lt;======== END ========&gt;
<======== 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
&lt;======== START ========&gt;
Fecha: 11/09/2008 06:09:26 pm
Total foreach con 100000 de registros
Tiempo 0.0221240520477 segundos
&lt;======== END ========&gt;
<======== 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 ...
Su voto: Nada Promedio: 5 (1 vote)

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

CAPTCHA
Esta pregunta es para probar si tu eres un humano y para prevenir spam en el sitio.
3 + 1 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.