martes, 13 de enero de 2009

Doctrine en Code Igniter

Hace unas semanas con un compañero estuvimos haciendo pruebas sobre el uso de un ORM en PHP.
Este fue probado usando un framework incluido con doctrine (sandbox) y tuvo un tiempo de respuesta similar al de Code igniter. La prueba consistia en hacer un join entre tres tablas (usuarios->grupos de usuarios->grupos).
Codeigniter fue probado utilizando Active Record para todas las pruebas.
El fin de estas pruebas era utilizar codigo lo más reutilizable y de más alto nivel posible en vez de código de especifico para el dbms (MySQL) utilizado (SQL).
Cuando integramos doctrine a code igniter el tiempo de respuesta resulto el doble que el de CI con AR, pero con un uso estable de memoria.
Por ultimo probamos aumentar la cantidad de registros consultados a miles lo cual resultaria en un gran producto cartesiano. En CI-AR los primeros intentos de probar el benchmark fallaron, por falta de memoria, los ultimos resultaron en un tiempo mucho mayor que CI-Doctrine, el cual se mantuvo estable.

En conculsion, doctrine es util para:
  • Mantener codigo prolijo y mantenible
  • Codigo reutilizable
  • Sitios con gran carga
  • Sitios que necesitan procesar grandes cargas
No util para:
  • Sitios con pocos usuarios
  • No se procesan muchos datos
  • Sitios simples
Las pruebas fueron hechas utilizando apache benchmark (ab) para 100 request con 10 concurrentes.

Más info: