lookupView-patch
Implementado agora via Map em vez de Array.
Tempo gasto na inicialização da aplicação em lookupView - para instância de desenvolvimento:
-
sem patch: 124 ms
Firefox Profiler (callstack filtrado paralookupView) -
com patch: 9 ms
Firefox Profiler (callstack filtrado paralookupView)
Tempo economizado: ~115 ms
Isso diminui o tempo gasto dentro de appendOutletView de 1.083 ms para 946 ms - para instância de desenvolvimento.
patch em helpers de handlebar brutos
Sim, é na verdade um copy-paste com uma alteração: usar uma verificação barata para isPath.
// substitui @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;
Por exemplo, renderTopicListItem aciona muitas chamadas de _getPath (mais 50-100 ms para economizar):
Firefox Profiler (callstack filtrado para _getPath dentro de renderTopicListItem)
Talvez as chamadas caras para _getPath sejam algo a ser otimizado em Ember.js e não em Discourse.
E confira o Firefox Profiler para obter informações sobre a execução de JavaScript: