lookupView-patch
Implémenté maintenant via Map au lieu de Array.
Temps passé au démarrage de l’application dans lookupView - pour une instance de développement :
-
sans patch : 124 ms
Firefox Profiler (callstack filtré surlookupView) -
avec patch : 9 ms
Firefox Profiler (callstack filtré surlookupView)
Temps économisé : ~115 ms
Cela réduit le temps passé dans appendOutletView de 1,083 ms à 946 ms - pour une instance de développement.
patch sur les helpers handlebar bruts
Oui, c’est en fait un copier-coller avec un changement : utiliser une vérification peu coûteuse pour isPath.
// remplace @ember/-internals/utils isPath
// @see: https://github.com/emberjs/ember.js/blob/3537670c14883346e11e841fcb71333384fcbc87/packages/%40ember/-internals/metal/lib/path_cache.ts#L5-L7
// @see: https://github.com/emberjs/ember.js/blob/255a0dd3c7de1187f4a2f61a97cf78bfff8f66a8/packages/%40ember/-internals/glimmer/lib/utils/bindings.ts#L70
let isPath = context.indexOf('.') > -1;
Par exemple, renderTopicListItem déclenche finalement de nombreux appels à _getPath (encore 50-100 ms à économiser) :
Firefox Profiler (callstack filtré sur _getPath à l’intérieur de renderTopicListItem)
Peut-être que les appels coûteux à _getPath sont quelque chose à optimiser dans Ember.js et non dans Discourse.
Et consultez Firefox Profiler pour avoir un aperçu de l’exécution JavaScript :