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().

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.