Ottimizzazione di FCP/LCP tramite la memorizzazione nella cache delle ricerche del modulo raw-view

lookupView-patch

Implementato ora tramite Map invece di Array.

Tempo impiegato all’avvio dell’applicazione in lookupView - per istanza di sviluppo:

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: