Otimizando FCP/LCP com cache de consultas de módulos raw-view

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:

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: