O que é um benchmark de JavaScript?

Um benchmark de JavaScript mede a velocidade de execução de um trecho de código executando-o repetidamente durante um período fixo e contando quantas operações por segundo ele consegue completar. Benchmarking é comumente usado para comparar duas abordagens para o mesmo problema — por exemplo, verificar se Array.includes() é mais rápido que Array.indexOf() para um caso de uso específico. Os resultados podem variar significativamente entre navegadores e dispositivos, já que cada mecanismo JavaScript (V8, SpiderMonkey, JavaScriptCore) possui suas próprias otimizações e estratégias de compilação JIT.

Descrição da ferramenta

Esta ferramenta permite que você cole dois trechos de código JavaScript e execute uma comparação de desempenho frente a frente diretamente no seu navegador. Cada trecho é cronometrado durante uma duração configurável, e os resultados mostram operações por segundo e tempo médio por operação para ambas as funções. Uma barra de progresso destaca a diferença de desempenho relativo, facilitando ver qual abordagem é mais rápida em um relance.

Recursos

  • Executa ambos os trechos em um Web Worker para que os benchmarks nunca bloqueiem ou congelem a aba do navegador
  • Duração de benchmark configurável para equilibrar precisão contra tempo de espera
  • Comparação lado a lado de ops/seg com uma barra visual e diferença percentual

Como funciona

Cada trecho é envolvido em um loop que executa pela duração especificada (padrão 2 segundos) após uma fase de aquecimento de 100 ms para permitir que o compilador JIT otimize o código. As operações são contadas durante a janela cronometrada, e ops/seg é calculado como count / elapsed_ms * 1000. Todo o benchmark é executado dentro de um Web Worker para que não possa acessar o DOM, mas tem acesso a globais JavaScript padrão como Math, Date, performance, arrays e objetos.

Dicas

  • Mantenha os trechos independentes; evite efeitos colaterais que se acumulem entre iterações
  • Use uma duração mais longa (3–5 segundos) para resultados mais estáveis em operações rápidas
  • Os resultados refletem seu navegador e máquina específicos — sempre faça benchmark no ambiente de destino