Como Rastrear Benchmarks Personalizados com o Bencher


Bencher suporta os dispositivos de benchmarking mais populares prontamente, e estamos sempre abertos a sugestões para novos adaptadores. No entanto, podem ocorrer situações em que um dispositivo de benchmarking pronto para uso não atenda às suas necessidades, necessitando a criação de um dispositivo personalizado de benchmarking. Felizmente para você, o Bencher também suporta o uso de um dispositivo de benchmarking personalizado. O jeito mais fácil de integrar seu dispositivo de benchmarking personalizado com o Bencher é produzir Bencher Metric Format (BMF) JSON.

Este é um exemplo de JSON BMF:

{
"benchmark_name": {
"latency": {
"value": 88.0,
"lower_value": 87.42,
"upper_value": 88.88
}
}
}

Neste exemplo, a chave benchmark_name seria o nome de um Benchmark. Nomes de benchmarks podem ser qualquer string não vazia de até 1024 caracteres. O objeto benchmark_name pode conter múltiplos nomes de Medida (Measure), slugs ou UUIDs como chaves. Se o valor especificado for um nome ou slug e a Medida não existir previamente, ela será criada para você. No entanto, se o valor especificado for um UUID, então a Medida já deve existir. Neste exemplo, latency é o slug para a Medida de Latência integrada. Cada Projeto por padrão tem uma Medida de Latência (ou seja, latency) e Throughput (ou seja, throughput), que são medidos em nanosegundo (ns) e operações / segundo (ops/s), respectivamente. O objeto Medida contém uma Métrica com até três valores: value, lower_value e upper_value. Os valores lower_value e upper_value são opcionais.

Neste exemplo, o objeto Medida latency contém os seguintes valores:

  • Um value de 88.0
  • Um lower_value de 87.42
  • Um upper_value de 88.88

Se você tivesse um script localizado em ./run/my/benchmarks.sh que executasse seus benchmarks e imprimisse os resultados na saída padrão como JSON do BMF, então você poderia rastreá-los usando bencher run e o adaptador json com o seguinte comando:

Terminal window
bencher run --adapter json "bencher mock"

Se os seus resultados fossem armazenados em um arquivo chamado results.json, então você poderia usar a opção --file para especificar o caminho do arquivo. Isso funciona tanto com um comando de benchmark quanto sem um.

Com um comando de benchmark:

Terminal window
bencher run --file results.json --adapter json "bencher mock > results.json"

Sem um comando de benchmark:

Terminal window
bencher mock > results.json && bencher run --file results.json --adapter json

Múltiplas Medidas

No Formato de Métrica Bencher (BMF) JSON o objeto Benchmark pode conter múltiplos nomes, slugs ou UUIDs de Medida como chaves. Se o valor especificado for um nome ou slug e a Medida ainda não existir, ela será criada para você. No entanto, se o valor especificado for um UUID, a Medida deve já existir. Cada objeto de Medida deve conter uma Métrica com até três valores: value, lower_value e upper_value. Os valores lower_value e upper_value são opcionais.

Aqui está um exemplo de BMF JSON com múltiplas Medidas:

{
"benchmark_name": {
"latency": {
"value": 88.0,
"lower_value": 87.42,
"upper_value": 88.88
},
"throughput" {
"value": 5.55,
"lower_value": 3.14,
"upper_value": 6.30
}
}
}

Neste exemplo, o objeto Medida latência contém os seguintes valores:

  • Um value de 88.0
  • Um lower_value de 87.42
  • Um upper_value de 88.88

E o objeto Medida throughput contém os seguintes valores:

  • Um value de 5.55
  • Um lower_value de 3.14
  • Um upper_value de 6.30

Você pode usar o subcomando CLI bencher mock com a opção --measure para gerar dados BMF simulados com múltiplas Medidas. Usaremos isso como um espaço reservado para seu próprio executor de benchmark personalizado. Usando bencher run e o adaptador json podemos rastrear nossos benchmarks com múltiplas Medidas com o seguinte comando:

Terminal window
bencher run --adapter json "bencher mock --measure latency --measure throughput"

🐰 Parabéns! Você aprendeu como rastrear benchmarks personalizados! 🎉


Continue: Como Rastrear Benchmarks no CI ➡

🤖 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: Sun, May 12, 2024 at 7:44:00 AM UTC | Last Updated: Sun, October 13, 2024 at 12:27:00 PM UTC