¿Qué se ejecuta más rápido? ¿una sentencia de if anidados o un switch? ¿es mejor usar comillas simples o dobles para trabajar con cadenas? ¿foreach, for o while? Estas preguntas nos las hemos podido hacer, o no, alguna vez trabajando con PHP. Y la respuesta es que si hay diferencias entre usar un código u otro. Muy posiblemente si trabajamos con sites pequeños no notaremos diferencia, pero cuando se trabaja a mayor escala el ahorro en el rendimiento pasa a ser fundamental.
En la página www.phpbench.com hicieron distintas pruebas y sacaron conclusiones de qué instrucciones son más rápidas o tienen un mejor rendimiento al ejecutarse. La instrucción es la misma, pero la ejecución es más óptima.
Estas son algunas conclusiones que ya comentaron en otros blogs como sentidoweb.com:
- Realizar un foreach es siempre más rápido, y si no recuperamos la clave del array mejor aún.
- Un for es más rápido si no calculamos previamente en una variable el tamaño del array que recorremos, y que sizeof es más rapido que count.
- Cuando vamos a asignar el valor de una posición de un array a una variable para tratar con ella, es conveniente hacerlo por referencia ($alias = &$aSingleDimArray[$i]).
- No es más rápido crear un objeto como referencia ($obj =& new SomeClass();).
- if es más rápido que switch/case, y ligeramente más rápido es usar == que ===.
- Parece ser que el uso de comilla simple o doble en las últimas versiones se ha mejorado y no existe apenas diferencia.
Si quieres hacer tus propias pruebas con tu código puedes crear una pequeña clase para hacer el cálculo, como encontré en kickbill.com:
-
class benchmark{
-
-
private $start;
-
private $end;
-
-
function __construct(){
-
}
-
-
function endBenchmark(){
-
}
-
-
function getBenchmark(){
-
$time = ($this->end – $this->start);
-
return $time;
-
}
-
}
-
-
/**************************
-
** Código para la prueba **
-
***************************/
-
-
$test= new benchmark;
-
-
// tu código aquí
-
-
$test->endBenchmark();
-