2010-02-06 17 views
16

Necesito medir la sobrecarga de rendimiento de enlaces de sucesos de Javascript adicionales (utilizando jQuery live), la sobrecarga probablemente aumentaría la carga de la CPU y sería muy difícil de detectar desde el perfil de tiempo de ejecución.Mida la carga de CPU de las aplicaciones Javascript

¿Cómo puedo medir las diferencias de carga de la CPU entre dos versiones diferentes de una aplicación de Javascript?

Respuesta

6

Otra opción para el análisis es dynaTrace Ajax edition. Resig tiene un quick overview of it here. Es específico de IE (pero ... ese es el que tiene el peor rendimiento en la mayoría de los casos, por lo que ...)

Eche un vistazo, todas las sugerencias aquí son geniales, si está viendo problemas de IE (algunas intranet las aplicaciones están bloqueadas), entonces dynaTrace es una excelente herramienta gratuita.

0

Creo que esta medida será muy específica para el motor. Si está de acuerdo con eso, eche un vistazo a las herramientas de desarrollador integradas en el navegador Chrome. Hay una opción para registrar el rendimiento y comparar resultados más tarde. Aquí está Getting Started guide (eche un vistazo a Perfilando y optimizando el video en la parte inferior).

2

Las herramientas de desarrollo de Chrome son geniales, pero como Chrome no es un navegador del que tenga que preocuparse en cuanto al rendimiento de JS, optimiza mucho las cosas, no ayuda mucho a encontrar cuellos de botella en otros navegadores. IE 8 has dev tools que le permiten crear un perfil, por lo que puede resultar útil, además del perfil de Firebug habitual.

Pero, en cuanto a su situación, déjenme decir que el enlace de un evento no genera mucha carga de CPU, más un problema de memoria, pero no debería preocuparse a menos que esté haciendo algo fuera de lo común en tu pagina.

Además, si usted se refiere, en particular, acerca de la función jQuery.live, permítanme explicar rápidamente cómo funciona: Digamos que haces $('#linksWrap a').live('click', fn);

  • Esto crea una, y sólo una controlador de eventos, y lo conecta al #linkswrap.
  • Al hacer clic en uno de los enlaces, el evento click aparece en el árbol DOM, llegando finalmente al #linkswrap.
  • jQuery.live detecta de qué enlace proviene realmente. Esta información está en el objeto de evento del navegador.
  • jQuery.live aplica la fn dentro del contexto de la relación que se ha hecho clic

Así que como ves, en realidad es bastante eficiente. El navegador solo adjunta un evento, por lo que el uso de la memoria es bajo, y tampoco necesita comprobar constantemente si hay nuevos elementos, sino que utiliza el evento de burbujeo de una manera genial.

De hecho, se podría argumentar que, si está adjuntando miles de eventos a una página, el método .live podría ser más eficiente, suponiendo que está utilizando buenos selectores. (p.ej..something .foo .bar.baz requiere una gran cantidad de recorrido y burbujeante, pero #parentOfTheLinks a.links será rápido)

0

Para una manera no científica, pero rápida para comparar las cargas de CPU, puede iniciar el administrador de tareas de Chrome y tener las dos versiones abiertas en diferentes pestañas/ventanas. No lo ayudará si está haciendo la optimización, pero le puede decir de un vistazo si la nueva versión consume menos CPU.

Cuestiones relacionadas