La importancia del profiler en PHP

Sin duda, las herramientas “IDE” o entornos visuales para la edición de código fuente aumentan muchísimo la producción.
Hoy en día es muy necesario que dicha aplicación disponga de una interfaz amigable y de herramientas super importantes a la hora de la verdad, creando un proyecto si no sabemos qué está pasando con nuestro código,no sabremos si hace lo que se espera de él cuando lo escribimos y previamente diseñamos…

Así pues, es imprescindible disponer de un profiler que nos informe por qué y qué es lo que hace que nuestra aplicación vaya demasiado lenta o se cuelgue; e incluso nos ayuda a depurar todo el proyecto de una forma a simple vista sencilla.

En el ejemplo podemos ver que el compilador lleva mucho tiempo en ejecutar la línea 29 de la clase que añade el contenido especificado en nuestro XML de aspectos a un fichero .PHP. Si leemos la línea veremos que lo que se hace es una llamada a implode : construir una cadena a partir de un array de contenidos. Es bien sabido que éste lenguaje es muy ineficiente cuando se trata de operar con cadenas, sobre todo en las concatenaciones…
El resto de llamadas ineficientes son básicamente la lectura de ficheros,por lo que ya sabemos que debemos intentar realizar el menor número de accesos a disco, éstos son, llamadas a require(), require_once(), include_once(), readfile(), virtual()include_path, fopen, etc…Ahora deben ser precedidas por funciones de comprobación de existencia de funciones,clases y ficheros… 😉

Por lo tanto ya sabemos donde tenemos que centrar nuestra atención a la hora de optimizar el código. 🙂

Compilador y generador terminados

He dejado de estudiar Matemáticas por un día justo la semana del examen…,pero no podía dejar de pensar en que podría acabar el compilador basado en el Paradigma orientado a Aspectos antes de esta semana!…sin él, el generador no es nadie 😉

Me ha llevado mucho porque el analizador sintáctico me estaba dando problemas y no sabía por qué no me añadía los puntos de corte automáticos a la clase del fichero original ,al final ,después de mucho depurar resultó que sólo era un constructor mal declarado…¡qué típico! jaja 😀

He añadido un documento explicando la idea y acabo de terminar el compilador con “pica código” incluido 😀 ,si,si….pica código…por tí, jejeje…, ahora los proyectos web se puede crear con un par de definiciones en XML (XAD) e incluso montar un repositorio de clases,módulos y funcionalidades con todo lo que una web necesita.

Por ejemplo si necesitáramos una cesta de la compra bastaría con descargarnos, como en CakePHP, el módulo, sin embargo aquí se añaden muchas más funcionalidades porque se permite cambiar (antes de generar) el código,todo lo que tenga nuestro proyecto de “extra”, i.e.: campos, funciones que necesitemos en cualquier lenguaje,etc…

Todo se pueden añadir en el XML como definiciones y se le pasa a zenphp para que genere las clases del proyecto, que cargará los orígenes de las definiciones y creará los ficheros.

Dejo una captura del compilador y generador funcionando.

Eso es todo por hoy, si quieres saber puedes leer más sobre Programación Orientada a Aspectos.