¿Cuál es una forma sencilla de medir la duración del ciclo de resumen de angularjs? Existen varios métodos para analizar el rendimiento del ciclo de digestión, sin embargo, cada uno viene con sus propios pitfals:
- Chrome Profiler: demasiados detalles, no desglosa el ciclo de resumen de una manera fácil de encontrar
- Batarang (complemento del navegador AngularJS): demasiada sobrecarga, frecuencia de actualización lenta, explota con aplicaciones grandes.
... debe haber una mejor manera?! 1?
fuente
La siguiente respuesta le dirá el rendimiento inactivo del bucle $ digest, es decir, el rendimiento de digest cuando ninguna de las expresiones de su reloj cambia. Esto es útil si su aplicación parece lenta incluso cuando la vista no cambia. Para situaciones más complejas, consulte la respuesta de aet.
Escriba lo siguiente en la consola:
angular.element(document).injector().invoke(function($rootScope) { var a = performance.now(); $rootScope.$apply(); console.log(performance.now()-a); })
El resultado le dará la duración del ciclo de digestión, en milisegundos. Cuanto menor sea el número, mejor.
NOTA:
También puedes probar:
angular.element(document.querySelector('[ng-app]')).injector().invoke(function($rootScope) { var a = performance.now(); $rootScope.$apply(); console.log(performance.now()-a); })
fuente
The listener is called only when the value from the current watchExpression and the previous call to watchExpression are not equal
. Su código no tiene en cuenta a ningún oyente. Y angular crea muchos oyentes. Nunca llamarías$apply()
cuando nada ha cambiado, por lo que tus resultados solo cuentan la mitad de la historia. Dependiendo de las circunstancias puede ser la menos interesante;)angular.element(document)
no rendirá mucho si usó lang-app
directiva para la inicialización. En ese caso, obtenga elng-app
elemento en su lugar. Por ejemplo, haciendoangular.element('#ng-app')
...Aquí hay una nueva herramienta que encontré que ayuda a digerir los perfiles: Digest-HUD
fuente
También puede usar rendimiento angular
Descargo de responsabilidad: soy el autor de la extensión
fuente
Se puede encontrar una herramienta útil para vigilar el ciclo de resumen a través de la excelente herramienta ng-stats de @kentcdodds . Crea un pequeño elemento visual como este, e incluso se puede implementar a través de bookmarklet. Incluso se puede usar dentro de iFrames como jsfiddle.
Encontrado en https://github.com/kentcdodds/ng-stats
fuente
Puedes usar UX Profiler
fuente
para el modo estricto, una ejecución de digest cucle, ejecútelo en la consola f12 en chrome
angular.element(document).injector().invoke(['$rootScope',function($rootScope) { var a = performance.now(); $rootScope.$apply(); return performance.now()-a; }])
fuente
Las herramientas descritas anteriormente ya le dieron la idea de medir el rendimiento del ciclo de resumen Los puntos más importantes para aumentar el rendimiento del ciclo de resumen son
Supervise de cerca los eventos de desplazamiento para ocultar todos los elementos invisibles y
reducir en gran medida el número de observadores.
Tenga ciclos de $ digest manejables para todos los demás eventos.
fuente