O que é mais rápido for ou forEach no JavaScript

O que é mais rápido for ou forEach no JavaScript

Tem muitas formas de iterar um array no JavaScript (conheça as principais aqui), o que torna a escolha de qual iterador usar mais difícil, então confira o que é mais rápido for ou foreach no JavaScript.

Dentre as principais maneiras de iterar um array no JavaScript se destacam o for e o foreach.

O primeiro e mais antigo é o for, estrutura básica da linguagem, que faz a iteração sobre os índices do array.

Em contrapartida o segundo (foreach) entrou na especificação do ES5 e itera sobre os elementos do array.

Além disso o foreach tem alguns outros parâmetros como o índice atual do array por exemplo.

Da mesma forma da estrutura de iteração a estrutura dos dois métodos é bem diferente.

O for é uma função básica na linguagem e espera três parâmetros.

Por outro lado o forEach é um método embutido na da classe Array.prototype e espera como parâmetro obrigatório somente uma função de callback.

Uma outra diferença é que possível parar o for usando o comando break, mas não é possível parar o forEach.

Além disso não é possível usar funções assíncronas dentro de um forEach.

Testes

Agora que já vimos um pouco de cada método vamos conhecer a metodologia de testes.

Inicialmente vamos iterar um array de inteiros com 50000 elementos.

Já para medir o tempo para leitura do array vamos usar o console.time() junto do console.timeEnd().

O que é mais rápido for ou forEach no JavaScript - Código

No teste inicial temos o for percorrendo o array em 2112.33 ms.

Já o forEach percorreu o array em 2375.49 ms.

No primeiro teste o for teve cerca de 10% mais velocidade.

Agora vamos ver como os dois se comportam com um volume menor de dados, só 500 registros.

Dessa vez o for percorreu o array em 23ms enquanto o forEach percorreu em só 20.1 ms, com 10% mais velocidade que o for.

Bom analisando friamente vimos que para grandes coleções é melhor usar o for quando falamos somente em performance.

Porém quando a coleção é menor o ideal é usar o forEach.

O que é mais rápido for ou forEach no JavaScript – Conclusão

Em suma como visto nos testes os dois métodos tem uma performance bem próxima no uso geral.

Mas o que eu gostaria de lembrar que performance não é tudo.

Em diversos momentos vale mais a pena usar uma função um pouco menos performática como o forEach e aumentar e muito a facilidade de manutenção do código do que ganhar um pouco de performance e ter um código mais complicado de dar manutenção.

Além disso se a performance for realmente importante ainda existem formas de melhorar ainda mais a performance.

Um bom ponto pode ser visto nessa pergunta no StackOverflow.

Agora se você quiser aprender a construir aplicações web com alta performance eu recomendo o Pacote Full-Stack, dos nossos parceiros da Danki Code.

3 Comments

  1. Acabei de copiar o teu teste e não foi esses os valores que eu tive. o forEach foi superior que o for.

    for: 2.149169921875 ms
    forEach: 1.35498046875 ms

    1. Jucieny, eu vi seu comentário no FB, obrigado.
      Eu estou tentando entender o motivo disso acontecer, aqui nos meus testes o for foi sempre mais rápido.
      Você usou o console.log interno? O console é bem custoso isso pode fazer diferença.

  2. Acredito que esses testes seriam melhor apresentados se fossem estatísticos. É muito difícil comparar performance por tempo porque depende muito do sistema operacional, do que acontece na máquina no momento, etc. Por isso, se o teste fosse repetido umas 500 vezes, levantando média e removendo os que estão muito fora da curva, talvez o teste seria mais representativo da performance.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *