Visão Geral de Benchmarking


A maioria dos resultados de benchmarks são efêmeros. Eles desaparecem assim que o seu terminal atinge o limite do scrollback. Alguns frameworks de benchmark permitem armazenar resultados em cache, mas a maioria só faz isso localmente. O Bencher permite que você acompanhe seus benchmarks tanto de execuções locais quanto de CI e os compare com resultados históricos.

A maneira mais fácil de acompanhar seus benchmarks é através do subcomando CLI bencher run. Ele envolve a saída do seu framework de benchmark existente e gera um Relatório. Este Relatório é então enviado para o servidor da API Bencher, onde a saída do framework de benchmark é analisada usando um adaptador de framework de benchmark. O adaptador de framework de benchmark detecta todos os Benchmarks que estão presentes e seus Métricas correspondentes. Esses Benchmarks e Métricas são então salvos junto com o Relatório. Se houver um Limite definido, então as novas Métricas são comparadas com as Métricas históricas para cada Benchmark presente no Relatório. Se uma regressão for detectada, um Alerta será gerado.

Daqui em diante, nos referiremos aos seus “benchmarks” como “testes de regressão de desempenho” para evitar qualquer confusão.

Benchmark

Um Benchmark é um teste de regressão de desempenho nomeado. Se o teste de regressão de desempenho for novo no Bencher, então um Benchmark é criado automaticamente. Caso contrário, o nome do teste de regressão de desempenho é usado como o identificador único para o Benchmark.

Tenha cuidado ao mudar o nome de seus testes de regressão de desempenho. Você precisará renomear manualmente o Benchmark no Bencher para coincidir com este novo nome. Caso contrário, o teste de regressão de desempenho renomeado será considerado um novo Benchmark. Essa mesma precaução também se aplica ao mover alguns testes de regressão de desempenho. Dependendo do harness de benchmark, o caminho para o teste de regressão de desempenho pode ser parte de seu nome.

A única exceção à ressalva acima é ignorar um Benchmark. Veja suprimindo alertas para uma visão completa.

Métrica

Uma Métrica é o resultado de um teste de regressão de desempenho em um único ponto no tempo. Podem ser coletados até três Valores para uma única Métrica: value, lower_value e upper_value. O value é obrigatório para todas as Métricas, enquanto lower_value e upper_value são opcionalmente independentes. Quais Valores são coletados é determinado pelo adaptador de suporte de benchmark.

Medida

Uma Medida é a unidade de medição para uma Métrica. Por padrão, todos os Projetos começam com uma Medida de Latência e Vazão com unidades de nanosegundos (ns) e operações/segundo (ops/s), respectivamente. A Medida é determinada pelo adaptador do quadro de referência de benchmark.


Relatório

Um Relatório é uma coleção de Benchmarks e suas Métricas para um determinado Branch e Testbed. Relatórios são mais frequentemente gerados usando o subcomando CLI bencher run. Veja como rastrear testes de regressão de desempenho para uma visão geral completa.

Branch

Um Branch é a referência git usada ao executar um Relatório (ou seja, nome do branch ou tag). Por padrão, todos os Projetos começam com um Branch main. Ao usar o subcomando da CLI bencher run, main é o Branch padrão se nenhum for fornecido. Consulte seleção de branch para uma visão geral completa.

Cabeçalho

O Cabeçalho de um Branch é a instância mais recente do Branch. Ele referencia o Ponto de Início mais recente, se houver um. Sempre que um Branch recebe um novo Ponto de Início, ele ganha um novo Cabeçalho. Veja seleção de branch para uma visão geral completa.

Start Point

Um Branch pode ter um Start Point. Um Start Point é outro Branch em uma versão específica (e git hash, se disponível). Métricas históricas e, opcionalmente, Limiares são copiadas do Start Point. Veja seleção de branch para uma visão completa.

Testbed

Um Testbed é o nome do ambiente de teste usado ao executar um Relatório. Por padrão, todos os Projetos começam com um Testbed localhost. Ao usar o subcomando CLI bencher run, localhost é o Testbed padrão se um não for fornecido.


Threshold

Um Threshold é usado para detectar regressões de desempenho. Um Threshold é atribuído a uma combinação única de: Branch, Testbed e Measure. Veja thresholds para uma visão geral completa.

Teste

Um Teste é usado por um Limite para detectar regressões de desempenho. A combinação de um Teste e seus parâmetros é chamada de Modelo. Consulte limites para uma visão geral completa.

Modelo

Um Modelo é a combinação de um Teste e seus parâmetros para um Limite. Um Modelo deve ter um Limite Inferior, um Limite Superior ou ambos.

  • Limite Inferior
    • Um Limite Inferior é utilizado quando um valor menor indicaria uma regressão de desempenho, como com a Medida de Throughput.
  • Limite Superior
    • Um Limite Superior é utilizado quando um valor maior indicaria uma regressão de desempenho, como com a Medida de Latency.

Cada Limite é usado para calcular um Limite de Referência. Então, cada nova Métrica é verificada em relação a cada Limite de Referência. Um Alerta é gerado quando uma nova Métrica está abaixo de um Limite Inferior ou acima de um Limite Superior. Veja limites para uma visão geral completa.

Limite de Fronteira

Um Limite de Fronteira é o valor calculado a partir de um Limite Inferior ou Superior. Ele é usado para comparar com uma nova Métrica. Um Alerta é gerado quando uma nova Métrica está abaixo de um Limite de Fronteira Inferior ou acima de um Limite de Fronteira Superior. Veja limiares para uma visão completa.

Alerta

Um Alerta é gerado quando uma nova Métrica falha em um Teste ao ficar abaixo de um Limite Inferior ou acima de um Limite Superior. Veja limiares para uma visão completa.



🐰 Parabéns! Você aprendeu tudo sobre o acompanhamento de benchmarks testes de regressão de desempenho! 🎉


Continue: bencher run Subcomando CLI ➡

🤖 Este documento foi gerado automaticamente pelo OpenAI GPT-4. Pode não ser preciso e pode conter erros. Se você encontrar algum erro, abra um problema no GitHub.


Published: Sat, August 12, 2023 at 4:07:00 PM UTC | Last Updated: Thu, October 10, 2024 at 7:50:00 AM UTC