Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Rendimiento: ¿conviene utilizar php POO?

Estas en el tema de Rendimiento: ¿conviene utilizar php POO? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas a todos. Hace unos meses me comencé a meter de lleno con php. Después tuve que dejar otro tiempo más porque me surgieron proyectos ...
  #1 (permalink)  
Antiguo 13/12/2008, 09:52
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 12 años, 7 meses
Puntos: 9
Rendimiento: ¿conviene utilizar php POO?

Buenas a todos. Hace unos meses me comencé a meter de lleno con php. Después tuve que dejar otro tiempo más porque me surgieron proyectos en otras plataformas, y ahora estoy retomando para hacer un proyecto personal en php. Me surgieron algunas dudas con respecto a la verdadera utilidad, en relación al rendimiento, de la programación orientada a objetos en php. Si bien no conozco como trabaja internamente php, es un lenguaje interpretado, es decir, que en cada carga o recarga de la página las clases en cuestión deben ser interpretadas una y otra vez. ¿Es más ineficiente interpretar una clase, que interpretar una secuencia de comandos?¿Alguien conoce de esta interna?. En .Net las clases son compiladas una vez que fueron solicitadas, por lo tanto, con cargas o recargas posteriores solo resta usarlas tranquilamente, ya que sabemos que ya ha pasado por esa etapa previamente.
Solo me estoy enfocando en el rendimiento de la aplicación. Si lo analizamos desde otro punto de vista, de seguro que encontramos muchas más ventajas a la programación orientada a objetos que a la programación procedimental.
Espero que alguien me oriente un poco en esto.
Saludos.
__________________
Add, never Remove
  #2 (permalink)  
Antiguo 13/12/2008, 12:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 5 meses
Puntos: 2122
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Tema trasladado PHP OO.

Es mínimo el impacto, si a caso lo que es más es la memoria ram que llegue a consumir, aunque no es nada que imapacte, ya que el compilador de PHP esta muy optimizado para evitar desperdiciar memoria.

Por otro lado si te importa un poco el tema de estar re-interpretando las clases, una vez que termines puedes usar Zend Optimizer para guardar solamente las clases en estado compilado, y asi eliminar el overhead de estar interpretando y ejecutando.

Saludos
  #3 (permalink)  
Antiguo 13/12/2008, 16:49
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 12 años, 5 meses
Puntos: 32
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Tus comentarios (completamente justificados) me hacen acordar a los mitos de la "optimización extrema" en PHP, algo que veo completamente injustificado.

La forma en que se hace las pruebas es generalmente muy fuera de la realidad, como hacer un loop de millones de registros para luego contar las milésimas de segundo entre usar un echo o un print.

El peor mal que podemos tener en la ingeniería de software es ir hacia la "optimización temprana", es decir, preocuparnos tempranamente del rendimiento y no de la funcionalidad o el diseño de un sistema.

La parte que no se llega a entender es que ya pasamos la época de hacer páginas PHP embebidas con HTML y conexiones SQL, actualmente los proyectos requieren SISTEMAS, y estos poder escalar y desarrollar rápidamente de acuerdo a las necesidades del mercado.

¿Cuanto cuesta modificar un producto web que no es un sistema? ¿cuanto nos cuesta hacer funcionalidades nuevas?


Si no tienes diseño, si no aplicamos metodologías que incluyan POO, dudo seriamente que podamos estar aptos de desarrollar un sistemas de medio para arriba.

Pero eso de "no uses require_once porque es caro", "echo es más rápido que print" ó "print es más rápido que echo" (he visto artículos sobre "optimización extrema" que dicen lo contrario entre ellos), etcétera, las considero completamente tontas e inútiles.

Podemos discutir que si tienes POO + Persistencia (BD), es seguro tendrás más consultas a la base de datos que si hicieras un JOIN y luego recuperaras los datos y procesaras, pero hay muchas técnicas para evitar esto, como el "lazy loading", evitando tener que consultar todas las veces por un mismo valor a la base de datos si ya lo tienes la primera vez, o evitar consultas SQL innecesarias por valores que perfectamente pueden estar en un array ya que no cambian (o en un archivo plano, luego lo puedes actualizar, etc), etc.

Siempre hay que tener en cuenta la escala del sistema, si es para 10 usuarios concurrentes, no me molestes con estas tonterías.

Pero puedes estar tranquilo, el problema no pasa por usar puramente POO, el problema para por otros lados, la latencia se estudia desde que el usuario ejecuta una acción y recorre todos los servicios y servidores hasta que el sistema responde, no es solo PHP.

PD: ahora me acuerdo que hace rato que quiero escribir un artículo sobre "lazy loading"
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #4 (permalink)  
Antiguo 14/12/2008, 07:41
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 12 años, 5 meses
Puntos: 32
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Cita:
Iniciado por GatorV Ver Mensaje
Tema trasladado PHP OO.

Es mínimo el impacto, si a caso lo que es más es la memoria ram que llegue a consumir, aunque no es nada que imapacte, ya que el compilador de PHP esta muy optimizado para evitar desperdiciar memoria.

Por otro lado si te importa un poco el tema de estar re-interpretando las clases, una vez que termines puedes usar Zend Optimizer para guardar solamente las clases en estado compilado, y asi eliminar el overhead de estar interpretando y ejecutando.

Saludos
Estimado, por lo que tengo entendido (nunca lo usé), con Zend Optimizer solo no puedes hacer eso, primero tienes que compilarlo con otro producto, el cual tienes que comprar primero.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 14/12/2008, 12:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 5 meses
Puntos: 2122
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Mmm según tengo entendido eso hace el Optimizer, guarda en cache una copia compilada del script, el otro producto que mencionas es el Zend Encoder, ese si transforma un .php a un archivo compilado para distribución, el Optimizer lo hace en memoria.

Saludos
  #6 (permalink)  
Antiguo 14/12/2008, 13:40
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 12 años, 5 meses
Puntos: 32
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Nunca lo usé, voy a ver de leer la documentación de ambos y probarlo. Según tenía entendido necesitas el Zend Encoder para compilarlo y el Zend Optimizer para ejecutarlo. Como decías "para guardarlo en estado compilado" me generó la duda si con el último solo podías llegar a eso.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 14/12/2008, 14:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 5 meses
Puntos: 2122
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Con el optimizer, es como un cache, o sea cuando ejecutas primero un archivo .php el optimizador guarda en memoria el archivo compilado para ser ejecutado en lugar de volver a compilar el archivo.

Pero el archivo .php siempre queda igual, con el Encoder si se transforma el archivo original para ser re-distribuido.

Saludos.
  #8 (permalink)  
Antiguo 14/12/2008, 20:44
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Muchas gracias por sus respuestas. No sabia que existia algo tal como el "Zend Optimizer". Me voy a poner a buscar info al respecto. Como ustedes tienen más experiencia que yo, me gustaría hacerles una pregunta: ¿alguna vez tuvieron la oportunidad, con aplicaciones reales, y no de prueba, de probar el rendimiento de un sitio con php poo y sin poo?. Quizás en algún momento les tocó migrar una aplicación a poo y pudieron notar alguna diferencia.
Saludos y gracias nuevamente.
__________________
Add, never Remove
  #9 (permalink)  
Antiguo 14/12/2008, 21:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 5 meses
Puntos: 2122
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Como te comenta enrique y yo te he comentado es nula la diferencia a lo mucho seran milisegundos pero nada que puedas decir que es demasiado, el interprete de PHP es muy optimizado en ese aspecto.

Saludos.
  #10 (permalink)  
Antiguo 14/12/2008, 21:35
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Si, habia entendido eso. Simplemente quería saber si ustedes mismos eran los que lo habian podido comprobar a partir de experiencias propias.
Saludos gatorv.
__________________
Add, never Remove
  #11 (permalink)  
Antiguo 14/12/2008, 21:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 5 meses
Puntos: 2122
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Pues actualmente estoy manteniendo una aplicacion hibrida, y te puedo decir que no es notorio el cambio, todo depende de como este programado y la limpieza del algoritmo, puede ser una aplicacion POO, pero PESIMAMENTE hecha y que no funcione bien, o puede ser una aplicacion sin POO pero igual pesimamente programada.

El rendimiento lo ves en la limpieza del diseño, sea o no POO.

Saludos.
  #12 (permalink)  
Antiguo 15/12/2008, 04:36
 
Fecha de Ingreso: diciembre-2008
Mensajes: 1
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Rendimiento: ¿conviene utilizar php POO?

hola,
he conocido éste hilo de discusión mediante el blog de Enrique. Os dejo el post que he publicado con mis experiencias...

http://www.programania.net/patrones-de-diseno/lecciones-aprendidas-sobre-rendimiento-en-php/

Un saludo a todos!

Última edición por luisartola; 15/12/2008 a las 04:37 Razón: no he puesto el link
  #13 (permalink)  
Antiguo 15/12/2008, 05:14
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 13 años
Puntos: 48
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Las optimizaciones son una vez que tienes el programa funcionando, a ser posible en un entorno lo mas real posible. En ese punto usas un profiler para analizar el tiempo empleado por tu codigo, y encuentras tus cuellos de botella. Son esos cuellos de botella los que hay que optimizar, a veces es simplemente cambiar el algoritmo (aplicar patrones como el lazy loading, ...).

Lo que es una tonteria es ir optimizando codigo que no tiene influencia en el rendimiento de la aplicacion.

Si estas creando paginas webs normales, no es necesario (rentable) pensar en la optimizacion.
  #14 (permalink)  
Antiguo 15/12/2008, 06:37
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 12 años, 5 meses
Puntos: 32
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Cita:
Iniciado por mariano_donati Ver Mensaje
Muchas gracias por sus respuestas. No sabia que existia algo tal como el "Zend Optimizer". Me voy a poner a buscar info al respecto. Como ustedes tienen más experiencia que yo, me gustaría hacerles una pregunta: ¿alguna vez tuvieron la oportunidad, con aplicaciones reales, y no de prueba, de probar el rendimiento de un sitio con php poo y sin poo?. Quizás en algún momento les tocó migrar una aplicación a poo y pudieron notar alguna diferencia.
Saludos y gracias nuevamente.
Sí, es medio difícil que algún proyecto tenga el tiempo suficiente como para desarrollar dos versiones, una con y otra sin POO, para ver el rendimiento

Como dice GatorV, el tema es que si está mal desarrollado, va a andar mal, más en POO, ya que solo caer en excesos de abstracciones tienes problemas para rato (pero no necesariamente es por agregar "clases" y "métodos").

Pero, si hablamos que tenemos un sistema POO con muchos archivos por clase, y lo comparamos de igual con Programación Estructurada, modularizado de la misma forma, no hay diferencia en rendimiento.

Pero, si hablamos que en vez de modularizar, tomamos un solo archivo y metemos todo ahí, y lo queremos comparar, la comparación no se hace en mismos contextos, por lo cual la invalida.

En este último caso tendremos más un tema de manejo de archivos y acceso a disco, pero si prestamos atención, no pasa por un tema de POO.

Si programamos de la misma forma en los dos paradigmas, y modularizamos de la misma forma, a lo sumo tendrás estructuras distintas o podrás codificar un poco más, pero conceptualmente es lo mismo.

Mientras no comparemos peras con zapallos, todo bien
__________________
Blog phpsenior.com Cursos a Distancia surforce.com

Última edición por enriqueplace; 15/12/2008 a las 08:30
  #15 (permalink)  
Antiguo 18/12/2008, 11:43
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 14 años, 3 meses
Puntos: 105
Respuesta: Rendimiento: ¿conviene utilizar php POO?

Holas,

Como mencionaron los amigos, creo que los mas optimo que puede hacer un programador o quien haga el programa es que su mismo programa y codigo este lo mas posible optimo, y para mi esto ya depende de uno mismo.

Sobre si la POO (PHP 5 sobre todo) o estructurada (PHP 4 o menos), mude hace poco todo un sistema de informacion que estaba muy estructurado a objetos, y la verdad se optimizo o se trato de optimizar al maximo el codigo y los programas, y al final me resulto un digamos 20 o 25 % mas rapido que el estructurado que habia, sobre todo mas rapido en los acceso a datos con el objeto mysqli.

http://www.sourcelabs.com/pdfs/SourceLabsPHP4vsPHP5.pdf

Saludos
Gildus
__________________
.: Gildus :.
  #16 (permalink)  
Antiguo 05/02/2009, 03:48
Avatar de miguel4ngel  
Fecha de Ingreso: febrero-2009
Mensajes: 17
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: Rendimiento: ¿conviene utilizar php POO?

eso ni dudarlo.. la POO ayuda al desarrollador a salir de lo artesanal y adentrarse al lo profesional.. imaginte que en un proyecto de 10 programadores cada quien programando segun sus criterios dañarian todo..! olvida esa idea.. y mejor decidete por POO es solo sugerencia!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas




La zona horaria es GMT -6. Ahora son las 08:40.