Aquí podría ser tu PUBLICIDAD


Comparaciones de velocidad - Procedural vs. OO en idiomas interpretados

votos
17

En lenguajes de programación interpretados, como PHP y JavaScript, ¿cuáles son las repercusiones de ir con un enfoque orientado a objetos sobre un enfoque de procedimiento?

Específicamente, lo que estoy buscando es una lista de verificación de aspectos a tener en cuenta al crear una aplicación web y elegir entre enfoques procedimentales y orientados a objetos, para optimizar no solo la velocidad sino también la capacidad de mantenimiento. Los casos citados de investigación y prueba también serían útiles si conoce algún artículo que lo explore más a fondo.

En pocas palabras: ¿qué tan grande (si es que hay alguno) es el rendimiento alcanzado realmente, al ir con OO vs Procedural en un lenguaje interpretado?

Publicado el 06/08/2008 a las 04:34
fuente por usuario cmcculloh
En otros idiomas...        العربية       

7 respuestas

votos
17

Tal vez estoy loco, pero preocuparme por la velocidad en casos como este usando un lenguaje interpretativo es como tratar de descubrir qué color pintar en el cobertizo. Ni siquiera nos metamos en la idea de que este tipo de optimización es completamente prematura.

Golpeaste el clavo en la cabeza cuando dijiste "mantenibilidad". Elegiría el enfoque que es el más productivo y más sostenible. Si necesita velocidad más adelante, no va a proceder de cambiar entre paradigmas de codificación orientados a objetos o procedimientos dentro de un lenguaje interpretado.

Respondida el 06/08/2008 a las 04:36
fuente por usuario Louis Brandy


Aquí podría ser tu PUBLICIDAD


votos
10

Por desgracia, he hecho mis pruebas también. Hice la prueba de velocidad, y es casi lo mismo, pero cuando las pruebas de uso de la memoria conseguir memory_get_usage () en PHP, vi un número abrumadoramente grande en el lado programación orientada a objetos.

116,576 bytes para programación orientada a objetos a 18,856 bytes para procedimental. Sé que "El hardware es barato", pero vamos! aumento 1,000% en el uso? Lo siento, eso no es óptima. Y tener tantos usuarios que golpean su sitio web a la vez, estoy seguro de que su memoria RAM solo se quemaría o agotado. ¿Me equivoco?

Respondida el 22/07/2011 a las 10:28
fuente por usuario George

votos
5

En pocas palabras: no, porque la sobrecarga de la interpretación abruma la sobrecarga del envío de métodos.

Respondida el 06/08/2008 a las 04:35
fuente por usuario Mark Harrison

votos
2

Si está utilizando un lenguaje interpretado, la diferencia es irrelevante. No debe utilizar un lenguaje interpretado si el rendimiento es un problema. Ambos realizarán más o menos lo mismo.

Respondida el 06/08/2008 a las 04:49
fuente por usuario Justin Standard

votos
1

En mi experiencia, un sitio en situaciones de carga se empantanó y dejan de responder con mucha más facilidad con el código de programación orientada a objetos de procedimiento. La razón es fácil de entender.

POO requiere mucho más asignaciones de memoria (malloc) y muchas más operaciones para ejecutarse en la memoria de código de procedimiento. Se requiere mucho más tiempo de CPU para realizar sus tareas. Se trata esencialmente de 'sobrecarga', envuelto alrededor de código de procedimientos, aumentar la carga de la CPU para su ejecución, especialmente cuando se realizan operaciones de bases de datos.

Muchos programadores como la conveniencia de la programación orientada a objetos, la creación de pequeñas cajas negras ocultas detrás de interfaces simples. Sin embargo, se me ha pagado bien para revivir sitios que se tarda mucho en responder bajo carga pesada de usuario. Sin tener en cuenta la programación orientada a objetos y reemplazándolo con funciones de procedimiento simples hizo una gran diferencia.

Si usted no espera que su sitio sea muy ocupado, por todos los medios utilizar programación orientada a objetos. Si usted está construyendo un sistema de alto tráfico, tendrá que pelar cada ciclo de la CPU de la transformación y cada byte de la salida que se puede.

Respondida el 22/03/2015 a las 07:31
fuente por usuario Division Six

votos
1

Su desempeño se caracterizará por la implementación, no por el lenguaje. Podría usar el lenguaje más lento y podría escalar para ser el sitio más grande del mundo siempre que lo diseñe a escala.

Solo recuerde la primera regla de optimización.

No lo hagas

:)

Respondida el 22/09/2008 a las 07:18
fuente por usuario Jon Clegg

votos
0

De hecho, he hecho una pequeña prueba como esta en Python en un sitio web que mantengo y descubrí que son casi equivalentes en velocidad, con el enfoque procedimental ganando algo así como diezmilésimas de segundo, pero que el código OO era tan significativo limpiador No continué el ejercicio más de una iteración.

Entonces realmente, no importa (en mi experiencia de todos modos).

Respondida el 26/08/2008 a las 09:01
fuente por usuario dwestbrook