2010-02-17 6 views
8

A menudo veo argumentos entre Classical (falso a través de alguna biblioteca), Pseudo-Classical y Prototypal Inheritance mencionando "eficiencia". Sin embargo, nunca he visto ningún respaldo de datos de este tipo de cosas. Sin mencionar "eficiencia" parece una palabra ambigua cuando se trata de un estilo de codificación, en lugar de un algoritmo.¿Una forma objetiva de comparar la memoria/velocidad de diferentes Patrones de herencia en JavaScript?

Me gustaría hacer algunas pruebas para "comparar" algunos de estos patrones y bibliotecas. Esto parece claramente diferente de la mayoría de los algoritmos o puntos de referencia de visualización que he visto en el pasado. ¿Qué piensan ustedes que son las cosas importantes para probar, y cuáles son las mejores formas de obtener esos números de manera confiable.

Lo que estoy pensando actualmente:

  • velocidad de creación de instancias (tiempo la creación de unos pocos miles de objetos utilizando cada patrón w/ funcionalidad idéntica)
  • Uso de memoria (La única manera de que pueda pensar es mirar a mi memoria en el administrador de tareas ... hay una mejor manera )
  • velocidad de acceso a las propiedades y métodos internos (iteración nueva temporización)
  • velocidad de sincronización de copias (iteración)
  • líneas de código (Revisión por pares las mejores prácticas siguientes ejemplos con un recuento )

Cualquier falacias, adiciones, u objeciones? ¿Alguien ha visto esta información en otro lugar?

Gracias!

+0

¿Hay alguna forma de dividir la recompensa entre varias personas? –

Respuesta

2

Hay algunas pruebas y números vinculados desde this blog post.

También asegúrese de leer this article por John Resig sobre la precisión del tiempo de JavaScript y cómo afecta a los parámetros de rendimiento. Si no termina usando JSLitmus como lo sugirió Residuum, asegúrese de seguir utilizando ciclos de prueba adaptativos.

Aunque estoy de acuerdo al 100% con el comentario de darelf de que debe probar varios navegadores, puede obtener detalles sobre el uso de la memoria y la CPU en Chrome presionando Shift + Esc.

+0

También una gran lectura con buena información y pruebas. ¡Muchas gracias! –

+0

Creo que todos hicieron un gran trabajo respondiendo esto, pero noquearon bastante bien ambas partes de la pregunta. Entonces bounty ho. Perdón por los demás Gracias una tonelada. –

1

Esto puede sonar obvio: Deberá tener en cuenta que cada navegador dará resultados diferentes. Debería ser parte de cualquier matriz que crees en tus pruebas. Buena suerte.

+0

Absolutamente, probablemente probaré la misma lista que la mayoría de las bibliotecas afirman soportar. Gracias por la entrada, por supuesto, sin embargo. –

1

No lo he usado, pero JSLitmus parece ser la herramienta adecuada para el trabajo. Here is a benchmark de diferentes métodos de herencia usando JSLitmus.

Si prueba las líneas de código, y el tamaño realmente importa para su punto de referencia (y el tamaño de los archivos javascript sí importa), también debe probar el tamaño de los archivos javascript minificados usando YUI Coompressor.

Para los puntos de referencia de uso de memoria, no tengo otra idea que mirar administrador de tareas o superior en sistemas Linux o su equivalente en Mac OS X (y debe probar estos también).

Aparte de eso: buena suerte y por favor libere la información recuperada por sus puntos de referencia. Y no se olvide de incluir los métodos de prueba para la reproducción de los valores, para que cualquier otro programador interesado pueda revisar sus resultados.

+0

¡Genial! ¡Esta es una respuesta muy útil! –

1

No estoy seguro si esto ayudará o no pero marque dyna trace hace un buen trabajo para dar números.

+0

Sí, esto definitivamente ayuda en el lado de la memoria de las cosas. Gracias. –

Cuestiones relacionadas