Looping em Javascript Array – Comparação de desempenho / velocidade de execução

image_pdfimage_print

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.

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!