viernes, 14 de septiembre de 2012

Supresión de errores en PHP empeora el rendimiento

Cualquier desarrollador PHP sabe que el rendimiento no es el punto fuerte e este lenguaje, no obstante la comunidad ha ido aportando grandes mejoras versión tras versión ( precompilado, optimización, etc ).

No es cuestión de derrochar recursos porque sí... es bueno estar abiertos a esos pequeños tips que nos enseñan con poco esfuerzo a ahorrar preciosos ciclos de reloj que en un proyecto grande pueden significar la diferencia entre algo razonable y algo insoportable.

Y he aquí la curiosidad: el magnífico sistema de supresión de errores en PHP ( incluir una arroba "@" antes de la instrucción que se desea silenciar )  es un auténtico caníbal silencioso de CPUs.  En algunos artículos acusan a esta directiva de provocar hasta un 40% de retardo adicional.

En este otro enlace muestran una sencilla prueba de 10.000 iteraciones con y sin prefijo "@", el resultado parece muy claro, hasta 10 veces más lento:


0.010571002960205 microsegundos con supresión de errores ( @instrucción )
0.002446174621582 microsegundos en ejecución normal

Desde que conozco esta información, como es de esperar, he eliminado la supresión de errores de mis algoritmos, no he percibido la diferencia de forma subjetiva, pero no pongo en duda lo que parece claro.

Y ahora queda una duda ¿qué hacemos con los posibles errores que pueden surgir si no hacemos uso de la supresión de errores?. Creo que sólo hay una respuesta... aplicar un control de errores más estricto prestando especial atención a las excepciones inesperadas en instrucciones básicas. Las buenas prácticas lo requieren.

No hay comentarios:

Publicar un comentario