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
valuede88.0 - Um
lower_valuede87.42 - Um
upper_valuede88.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:
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:
bencher run --file results.json --adapter json "bencher mock > results.json"Sem um comando de benchmark:
bencher mock > results.json && bencher run --file results.json --adapter jsonMú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
valuede88.0 - Um
lower_valuede87.42 - Um
upper_valuede88.88
E o objeto Medida throughput contém os seguintes valores:
- Um
valuede5.55 - Um
lower_valuede3.14 - Um
upper_valuede6.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:
bencher run --adapter json "bencher mock --measure latency --measure throughput"🐰 Parabéns! Você aprendeu como rastrear benchmarks personalizados! 🎉