4 "consejos" exagerados sobre optimización en php.

Se dan muchos consejos sobre optimización en php y he visto gente que le grita a otros (yo me incluyo) sobre usar echo en vez de print... usar comillas simples en vez de dobles... etc. Aquí van 4 "consejos" exagerados sobre optimización en PHP.

Usar echo en vez de print

Si es cierto que print en si es una función y por tanto devuelve algo.. echo solo se encarga de imprimir pero la verdad es que la diferencia es prácticamente nula.

En este sitio lo analizan a base de VLD (Vulcan Logic Disassembler). El resultado es que print usa solo un opcode (unidad de ejecucion) mas que echo.
http://fabien.potencier.org/article/8/print-vs-echo-which-one-is-faster

Yo siempre digo que use echo a no ser que necesites realmente utilizar print pero el coste es realmente barato. Tiempo de ejecución:

<?php
for($i=0;$i<1000;$i++){
   print('Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum, rerum, 
   excepturi, praesentium, non totam ratione eius quae alias esse ad assumenda 
   aspernatur explicabo accusantium dolores similique deleniti voluptatem reprehenderit
   odio.');
}
?>

echo  -> 0.0049898624420166 segundos.
print -> 0.0065829753875732 segundos.

Comillas dobles vs simples

Como las comillas dobles "parsean", se asume que son mas lentas que las simples. En las ultimas versiones de PHP, esto es mas bien un "mito" falso. Pues de hecho, en algunas ocasiones, las simples pueden llegar a ser mas lentas que las dobles. Tiempo de ejecución:

dobles  -> 0.0044369697570801 segundos.
simples -> 0.0043721199035645 segundos.


$i++ vs ++$i

Puesto que para post-incrementar ($i++), PHP copiara el valor de $i en la memoria interna, le sumara 1 y devolverá, se considera que es mas lento que pre-incrementar (++$i) que solo incrementa y devuelve... Tiempo de ejecución:

$i++ -> 0.00017093254089355 segundos.
++$i -> 0.00015902519226074 segundos.

Switch vs If/Else

Realmente no se de donde salio este "consejo" pero se supone que switch es mas rápido que if/else... Tiempo de ejecución:
switch  -> 0.0004727840423584 segundos.
if/else -> 0.0004851139068603 segundos.

Saludos

Comentarios

Entradas populares de este blog