Estoy trabajando en un proyecto con Zend Framework 1.11, Doctrina 2, algunos Symfony 2 componenents y otras herramientas & bibliotecas.optimizar mi rendimiento
Estoy tratando de optimizar el rendimiento utilizando Xdebug & Webgrind.
ya he encontrado algunos cuellos de botella como el análisis Ini de configuración, etc .. y en caché que.
Ahora, acaba de darse cuenta de que la carga automática es la parte más costosa de mi solicitud:
Opl\Autoloader\ApcLoader->loadClass 274 31.36 43.86
Zend_Loader_PluginLoader->load 150 4.80 12.29
Zend_Loader_Autoloader->getClassAutoloaders 278 1.42 1.91
Zend_Controller_Router_Route_Regex->_getMappedValues 291 1.29 1.35
Doctrine\ORM\UnitOfWork->createEntity 85 1.24 3.18
Como se puede ver que no estoy usando el valor por defecto Zend_Loader_Autoloader
, estoy usando Opl
que es, como Hasta ahora sé, más rápido que eso, estoy usando el classMapLoader
con un caché APC, pero aún se ralentiza un poco en comparación con el resto de la aplicación.
¿Cómo podría optimizar eso?
Tengo alrededor de 250 clases cargadas, y parece que solo ~ 40 son lentas, otras muestran 0,00 como "Costo total de llamadas" pero otras están aumentando de 0,08 a 0,57 en la llamada requerida.
Por cierto, desde que utilicé el autocargador Opl, parece que en mi entorno de producción APC solo opera el caché de código de operación del archivo que son "requeridos manualmente", no los que son llamados por el autocargador.
gracias su gran respuesta, de hecho mi problema es que migré de la aplicación pasada de moda con ZF1.7 y Zend_Db y su transacción rate (dado por asedio) devuelve algo así como 30/40/s donde el mío es solo 10, sin embargo hice mucha optimización como la optimización de consultas que reduce globalmente el tiempo de solicitud, pero estoy un poco decepcionado de tener esa tasa. Seguramente, la compra de hardware nuevo es una solución, y lo será, pero tampoco quiero que sea LA solución. Al mirar el autocargador, parece que Doctrine necesita más archivos que Zend Framework. – Trent
Considere si realmente necesita un ORM en su aplicación. Si no lo hace, elimine la doctrina y simplemente use la * puerta de enlace de datos de tabla * o * la puerta de enlace de datos de fila * ofrece la biblioteca zend. O simplemente adhiérase a su propia abstracción db con el controlador mysql nativo de PHP en PDO. Si la base de datos es su cuello de botella, acerque su código y la base de datos en busca de rutas más cortas. Esto podría reducir algunas de las opciones de comodidad que ofrece ORM, pero será mucho más rápido y codificará su propia comodidad creando su propia función para buscar y enviar datos al almacenamiento de MySQL. – hakre
Me gusta la sugerencia de dejar todo tipo de cosas (es decir, aligerar). No me importa la sugerencia de "comprar un mejor hardware. Eso optimizará automáticamente tu código". Es como decir que si el jinete está demasiado gordo, consigue un caballo más rápido. Los ingenieros que trabajan duro en los proveedores de chips hacen un trabajo increíble para darnos hardware cada vez más rápido. Me pregunto si saben que los programadores confían en eso, en lugar de sacar la grasa de su código. –