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:
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
de88.0
- Um
lower_value
de87.42
- Um
upper_value
de88.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:
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:
Sem um comando de benchmark:
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:
Neste exemplo, o objeto Medida latência
contém os seguintes valores:
- Um
value
de88.0
- Um
lower_value
de87.42
- Um
upper_value
de88.88
E o objeto Medida throughput
contém os seguintes valores:
- Um
value
de5.55
- Um
lower_value
de3.14
- Um
upper_value
de6.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:
🐰 Parabéns! Você aprendeu como rastrear benchmarks personalizados! 🎉