Pregunta

De interpretación de lenguajes de programación, como PHP y JavaScript, ¿cuáles son las repercusiones de ir con una orientación hacia el Objeto sobre un enfoque del Procedimiento?

Específicamente lo que estoy buscando es una lista de cosas a considerar al crear una aplicación web y elegir entre el Objeto y procedimientos enfoques Orientados a optimizar no sólo para la velocidad, pero la facilidad de mantenimiento así.Citado de investigación y casos de prueba sería de ayuda si usted sabe de algún artículos de profundizar más en ello.

Línea de base:cómo de grande (si hay alguno) es el impacto en el rendimiento, en realidad, cuando va con OO vsProcedimiento en un lenguaje interpretado?

¿Fue útil?

Solución

Tal vez estoy loco, pero preocuparse por la velocidad en este tipo de casos el uso de un lenguaje interpretativo, es como tratar de averiguar de qué color pintar la nave.No vamos a entrar en la idea de que este tipo de optimización es totalmente pre-madura.

Usted golpea el clavo en la cabeza cuando dijo 'mantenimiento'.Yo prefiero el enfoque de que es la más productiva y más sostenible.Si usted necesita la velocidad más tarde, no va a venir de conmutación entre procesal frente orientado a objetos de codificación de los paradigmas dentro de un lenguaje interpretado.

Otros consejos

Por desgracia, me he hecho mis pruebas también.Hice la prueba de velocidad, y es aproximadamente la misma, pero cuando las pruebas para el uso de la memoria de llegar memory_get_usage() en PHP, vi a un abrumadoramente mayor número en la programación orientada a objetos secundarios.

116,576 bytes para la programación orientada a objetos para 18,856 bytes de procedimiento.Sé que "el Hardware es barato", pero vamos!1,000% de aumento en el consumo?Lo siento, eso no es óptima.Y tener tantos usuarios de golpear a su sitio web a la vez, estoy seguro de que tu memoria RAM se acaba de quemar, o salir corriendo.Estoy equivocado?

Línea de base:no, debido a la sobrecarga de interpretación abruma la sobrecarga de método de envío.

En mi experiencia, un sitio bajo carga pesada se estanca y no responde mucho más fácilmente con la programación orientada a objetos código de procedimiento.La razón es fácil de entender.

La programación orientada a objetos requiere mucho más asignaciones de memoria (MALLOC) y mucho más de las operaciones a ejecutar en la memoria de código de procedimientos.Se requiere mucho más tiempo de CPU para realizar sus tareas.Es esencialmente 'sobrecarga', envuelto alrededor de código de procedimientos, y añadiendo a la carga de CPU para su ejecución, especialmente cuando se realizan operaciones de base de datos.

Muchos programadores les gusta la comodidad de la programación orientada a objetos, la creación de pequeñas cajas negras oculto detrás de las interfaces simples.Sin embargo, me han pagado bien a revivir los sitios que estaban tomando para siempre a responder bajo la pesada carga del usuario.El desmantelamiento de la programación orientada a objetos y su sustitución con el simple procedimiento de las funciones hizo una gran diferencia.

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

Si usted está usando un lenguaje interpretado, la diferencia es irrelevante.Usted no debe utilizar un lenguaje interpretado, si el rendimiento es un problema.Ambos se realice sobre el mismo.

Su desempeño se caracteriza por la aplicación, no el idioma.Usted podría utilizar el más lento del lenguaje y podría escalar a ser el sitio más grande en el mundo, mientras que el diseño a escala.

Sólo recuerda que la primera regla de optimiztion.

No.

:)

De hecho, he hecho una pequeña prueba de como esto en python en un sitio web que mantener y se encontró que son casi equivalentes en la velocidad, con el enfoque del procedimiento ganar algo así como diez milésimas de segundo, pero que la OO código era tan considerablemente más limpio que no continúe el ejercicio de más de una iteración.

Así que en realidad, no importa (en mi experiencia de todos modos).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top