lookupView-patch
Implementato ora tramite Map invece di Array.
Tempo impiegato all’avvio dell’applicazione in lookupView - per istanza di sviluppo:
-
senza patch: 124 ms
Firefox Profiler (callstack filtrato sulookupView) -
con patch: 9 ms
Firefox Profiler (callstack filtrato sulookupView)
Tempo risparmiato: ~115 ms
Questo riduce il tempo impiegato all’interno di appendOutletView da 1.083 ms a 946 ms - per istanza di sviluppo.
patch su helper handlebar grezzi
Sì, è in realtà un copia-incolla con una modifica: usa un controllo economico per isPath.
// sostituisce @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;
Ad esempio, renderTopicListItem attiva in definitiva molte chiamate a _getPath (altri 50-100 ms da risparmiare):
Firefox Profiler (callstack filtrato su _getPath all’interno di renderTopicListItem)
Forse le chiamate costose a _getPath sono qualcosa da ottimizzare in Ember.js e non in Discourse.
E dai un’occhiata a Firefox Profiler per avere qualche informazione sull’esecuzione di JavaScript: