php zend-framework cakephp symfony1 performance

¿Symfony y CakePHP son demasiado lentos para poder usarse?



zend-framework symfony1 (4)

Hasta ahora, siempre he dicho que CakePHP está demasiado hinchado y lento. Realmente no lo sé, acabo de ver "algunos" puntos de referencia. Lo que realmente quiero saber es que si esos dos marcos (Symfony y CakePHP) son demasiado lentos para ser utilizables de manera que el usuario se sienta frustrado. Ya sé que esos marcos son más lentos que otras alternativas, pero esa no es la cuestión.

Hago la pregunta porque quiero crear una aplicación web de gestión de proyectos y sigo dudando entre un par de marcos. He tenido algunos problemas para aprender Zend, pero no me he esforzado lo suficiente.

Entonces, en conclusión, además de la primera pregunta anterior, me gustaría hacer otra pregunta:

Si quiero crear una herramienta de administración de proyectos (que es un proyecto bastante grande), ¿cuál de los siguientes debería sugerir, considerando el tiempo de desarrollo, la velocidad de la aplicación resultante y la solidez del producto final?

  • Symfony
  • CakePHP
  • Zend Framework

También debo mencionar que no conozco ninguno de esos marcos, y que quiero aprender uno de ellos (al menos).


El problema con los puntos de referencia es que normalmente no se prestan al mundo real. Escriba una aplicación real y verá que todos los marcos están dentro de aproximadamente un orden de magnitud entre sí cuando se trata de velocidad. Y todos son más lentos que si no usara un marco (y sepa cómo programar).

Sin embargo, lo que hay que mirar es la compensación. Los marcos sacrifican un poco de rendimiento por la capacidad de reducir significativamente el tiempo de desarrollo. ¿Qué es más importante para usted, un rendimiento sin adulterar o un tiempo de desarrollo razonablemente rápido? Facebook no usaría un marco de trabajo de RAD para su sitio, pero eso se debe a que el rendimiento vale más que el tiempo de desarrollo agregado. Del mismo modo, es probable que una pequeña empresa con un solo desarrollador se beneficie más de un marco que el impacto de rendimiento razonablemente pequeño (digo pequeño, porque el impacto en cada vista de página es mínimo. El efecto "se suma" con un mayor tráfico).

Lo que sugeriría, es echar un vistazo a través de un montón de marcos. Pruébalos (la mayoría tiene un tutorial de "blog"). Tener una idea de cómo funcionan. Elige uno que te guste y luego juega un rato con él. Aprenda su estilo de codificación, y cómo le gusta hacer las cosas ... Lo más importante es aprender cómo funciona. Trate de aprender el "por qué" detrás de los detalles. La capacidad de usar un marco es IMHO directamente ligada a la comprensión de cómo funciona ... No use algo que le resulte incómodo a menos que tenga que hacerlo. Encuentra uno que te "ajuste" y luego sigue con él hasta que tengas fluidez ...


Las diferencias serán insignificantes porque sus partes lentas siempre serán de E / S - Base de datos, Sistema de archivos, etc. Asegúrese de tener una buena estrategia de almacenamiento en caché de datos y no haga nada demasiado escandalosamente tonto en el código y no lo logrará. t importa


Los marcos generalmente buscan una mejor organización del código, la reutilización de los componentes, la capacidad de prueba y generalizar, la calidad y el mantenimiento de la aplicación. Esta no puede ser la opción más orientada al rendimiento.

Tengo sitios que funcionan con Symfony que son bastante rápidos, los puntos de referencia se acercan a la plantilla HTML estática original.

El problema de rendimiento podría ocurrir más rápidamente cuando se usa un marco (y un ORM como Doctrine) que cuando se coloca un código spagetti dentro de una página HTML estática. Eso me suena normal: más tratamientos, más verificaciones, dependencias de modo, más código para analizar, etc.

Si desea que la aplicación sea más rápida, básicamente son formas:

  1. Obtenga hardware más rápido, cuesta, pero puede valer la pena si este costo está por debajo del costo de los programadores e ingenieros, lo que generalmente es el caso.
  2. Optimice el software, el paso más grande de esta manera es usar el almacenamiento en caché en múltiples niveles: código de operación, resultados de consultas de bases de datos, cualquier objeto pesado, procesamiento de HTML (parcial y completo).

Con una aplicación MVC bien diseñada, puede administrar el rendimiento como un problema aislado, usar el generador de perfiles para ver los cuellos de botella de la aplicación y tratarlos uno por uno (una vez más, la optimización también puede estar en el lado del hardware).

La elección de un marco PHP no se debe realizar en varias pruebas de rendimiento, aunque no sean objetivas. Desde mi punto de vista, todos los marcos principales de MVC se pueden utilizar para crear sitios web de rendimiento, todo es cuestión de optimización.

Si usted y su equipo conocen mejor a Symfony, CakePHP o Zend, entonces háganlo. Manejará la optimización del rendimiento una vez que su aplicación sea funcional, existen soluciones para cualquier marco.

Si la experiencia del equipo es demasiado amplia y cualquiera tiene sus propias preferencias, entonces personalmente sugeriría a Symfony, ya que sus capacidades de almacenamiento en caché vienen integradas con el marco (no sé para otros)


Recomiendo cakePHP v1.3 porque es más rápido y fácil de entender. Encontrará muy buena ayuda (documentación y tutoriales) relacionada con este marco . La documentación está bien escrita . Incluso si está atascado en algún lugar, podrá encontrar una solución en o cakephp google group o buscar en google.

He trabajado en ambas versiones de cakephp (1.2 y 1.3) y también he probado una mano en el marco de Zend (yo también probé mi mejor nivel pero me quedé atascado en el marco cuando se trató de la implementación de diseños).

Pero después de pasar más de un año en cakephp, me enorgullece decir que es el mejor marco para trabajar.