[ TEMIGA ]
No te confies de todo lo que dice el manual de PHP
Hace unos días haciendo unos benchmark a kumbiaphp framework en comparación con la vieja estructura de directorios de alguna para ver si la nueva estructura directorio genero efectos de rendimientos sobre el framework que seria lo ideal.
Bien lo cierto es que cuando se corrió el benchmark los #request/seg no cuadraban y no era lógico ya que la nueva estructura se depuraron ciertas cosas que sobraban, en el benchmark los números obtenidos eran tan locos que la vieja estructura tenia unos 10 #req/seg por encima :-S no era nada normal esto, nos toco recurrir a las buenas prácticas de desarrollo y que ya es una constante dentro del Equipo de Desarrollo de kumbiaphp hacer debug y profiler con xdebug :-), esto para detectar donde estaban los “cuellos de botellas” que nos hacían mas lento que la versión anterior.
El detalle estaba en una función de PHP llamada extract, dentro de kumbiaphp framework se utiliza esta dicha función en el core ya que el framework implementa las variables de instancia (algo muy parecido de Rails), es decir todo lo que llame en mi controlador $this->var o sean atributos públicos, en la vista los tengo disponible como $var, volviendo al punto esta funcion nos permite hacer lo antes dicho pero recibe ciertos parámetros uno es unas constantes entre ellas EXTR_OVERWRITE (Si hay colisión, sobrescribe la variable existente) nosotros decidimos sacar la constante porque en la documentación Oficial de PHP dice claro lo siguiente:
Si no se especifica tipo_extraccion , se asume que vale EXTR_OVERWRITE.
Bien como sabemos el xdebug nos da mucha información y la misma nos decía que el “cuello de botella” estaba allí ya que tomamos un profiler de la versión anterior y los tiempos eran totalmente distintos en ese punto. viendo en detalle la función extract decidí olvidar lo que dice el manual de PHP y pasar de forma implícita el tipo de extracción en este caso EXTR_OVERWRITE, una vez hecho el cambio vuelvo a correr el benchmark y como por arte de magia ahora obtengo los resultados esperados la nueva estructura ha causado efecto en velocidad y esta ~10 #req/seg por encima respecto a la vieja estructura.
Conclusión.
Tal como dice el titulo del post no hay que confiarse de lo que dicen algunos manual, ya que pueden ocurrir excepciones como la que comente aqui. En el caso descrito fue detectado este detalle porque se hizo uso de las buenas prácticas de desarrollo y de las herramientas disponibles y el turno fue para una que muchos obvian (xdebug), que si le damos el uso correcto podemos ganar mucho en nuestros desarrollos.
| Imprimir artículo | Este artículo fue publicado por CaChi el Mayo 17, 2009 a las 8:07 pm, y está archivado en PHP5, Planeta Linux, Programación. Sigue las respuestas a esta entrada a través de RSS 2.0. Puedes ir hasta abajo y dejar una respuesta. No se permiten pings. |







hace 5 meses
Siempre hay que tener un criterio propio, no alabar como ultima palabra a los gurus, tambien uno puede cuestionar y formar sus propias conclusiones, no hay como experimentar y uno jusgar que es mejor