Somar um array com 10k com valores numéricos aleatóriamente preenchidos.
E o resultado é o abaixo:
For Loop, average loop time: ~10 microseconds While, average loop time: ~11 microseconds ForEach, average loop time: ~77 microseconds For-Of, average loop time: ~110 microseconds Reduce, average loop time: ~113 microseconds
Enquanto pesquisava como somar um array, “reduce” era a solução mais oferecida, estranhamente também é a mais lenta.
Até mesmo o mais novo for-of (ES6) fornece desempenho inferior. Acontece que o bom e velho loop (e também o “while”) fornece o melhor desempenho de longe – 10x melhor!
Como a solução mais recente e recomendada pode tornar o JavaScript muito mais lento? A causa dessa dor vem de duas razões principais, reduce e forEach exigem uma função de retorno (callback) de chamada seja executada de forma recursiva e enche a pilha, além de operação e verificação adicionais que são feitas sobre o código executado.