- Ferramenta de benchmarking ultraleve, com menos de 10 KB, desenvolvida para medir com precisão o desempenho de código
- Funciona com base em Web API e oferece medição de tempo precisa usando
process.hrtime ou performance.now
- Pode ser executada em diversos ambientes de runtime JavaScript, como Node.js, Deno e Bun
- Oferece análise estatística: suporte ao cálculo de latência e throughput com média, desvio padrão, margem de erro, variância, percentis etc.
- Modo de execução com concorrência: execução paralela possível por unidade de
task ou de bench, com controle do número máximo de execuções simultâneas pela opção threshold
- Estrutura baseada em eventos e extensível: as classes
Bench e Task herdam de EventTarget, permitindo registrar listeners para eventos como cycle e abort
- Detecção automática de funções assíncronas: verifica
AsyncFunction ou retorno de Promise para ativar automaticamente o modo async
- Visualização e conversão de resultados: o método
bench.table() converte para o formato de saída do console.table(), e funções Converter personalizadas permitem customizar o formato de saída
- Com a configuração
retainSamples, mantém os dados brutos das amostras, podendo ser usados em análises personalizadas, visualização de gráficos e exportação de resultados
- Permite escolher um provedor de timestamp preciso
- O padrão é
performance.now()
- Suporte a opções otimizadas por runtime, como
hrtimeNow, bunNanoseconds e auto
- Também é possível implementar uma interface TimestampProvider personalizada
- Suporte a interrupção baseada em AbortSignal
- É possível interromper a execução (abort) do benchmark inteiro ou de tarefas individuais
- Ao interromper, um evento
abort é disparado e o sinalizador de estado (task.result.aborted) é definido
- Estrutura de pacote único, sem dependências externas, garantindo inicialização rápida e boa velocidade de execução
- Em comparação com Benchmark.js, mitata, tatami-ng e Bema, destaca-se por ser menor, mais simples e mais amigável a Web APIs
1 comentários
Agora fico pensando se isso ainda é necessário. A IA já escreve muito bem scripts para medir performance de acordo com aquele momento e contexto.