Comment Suivre des Benchmarks Personnalisés avec Bencher
Bencher supports the most popular benchmarking harnesses out-of-the-box, and we are always open to suggestions for new adapters. However there can be situations where an off-the-shelf benchmarking harness doesn’t fit your needs, necessitating the creation of a custom benchmarking harness. Lucky for you, Bencher also supports using a custom benchmarking harness. The easiest way to integrate your custom benchmark harness with Bencher is to output Bencher Metric Format (BMF) JSON.
This is an example of BMF JSON:
In this example, the key benchmark_name
would be the name of a Benchmark.
Benchmark names can be any non-empty string up to 1024 characters.
The benchmark_name
object can contain multiple Measure names, slugs, or UUIDs as keys.
If the value specified is a name or slug and the Measure does not already exist, it will be created for you.
However, if the value specified is a UUID then the Measure must already exist.
In this example, latency
is the slug for the built-in Latency Measure.
Each Project by default has a Latency (ie latency
) and Throughput (ie throughput
) Measure,
which are measured in nanosecond (ns)
and operations / second (ops/s)
respectively.
The Measure object contains a Metric with up to three values:
value
, lower_value
, and upper_value
.
The lower_value
and upper_value
values are optional.
In this example, the latency
Measure object contains the following values:
- A
value
of88.0
- A
lower_value
of87.42
- An
upper_value
of88.88
You can use the bencher mock
CLI subcommand to generate mock BMF data.
We will use it as a placeholder for your own custom benchmark runner.
Using bencher run
and the json
adapter
we can track our benchmarks with the following command:
If your results were instead stored in a file named results.json
,
then you could use the --file
option to specify the file path.
This works both with a benchmark command and without one.
With a benchmark command:
Without a benchmark command:
Mesures Multiples
Dans le Format de Metric Bencher (BMF) JSON, l’objet Benchmark peut contenir plusieurs noms, slugs ou UUIDs de Mesure en tant que clés. Si la valeur spécifiée est un nom ou un slug et que la Mesure n’existe pas déjà, elle sera créée pour vous. Cependant, si la valeur spécifiée est un UUID, la Mesure doit déjà exister. Chaque objet Mesure doit contenir un Metric avec jusqu’à trois valeurs : value
, lower_value
, et upper_value
. Les valeurs lower_value
et upper_value
sont facultatives.
Voici un exemple de BMF JSON avec plusieurs Mesures :
Dans cet exemple, l’objet Mesure latency
contient les valeurs suivantes :
- Une
value
de88.0
- Un
lower_value
de87.42
- Un
upper_value
de88.88
Et l’objet Mesure throughput
contient les valeurs suivantes :
- Une
value
de5.55
- Un
lower_value
de3.14
- Un
upper_value
de6.30
Vous pouvez utiliser la sous-commande CLI bencher mock
avec l’option --measure
pour générer des données BMF fictives avec plusieurs Mesures. Nous l’utiliserons comme un espace réservé pour votre propre exécuteur de benchmark personnalisé. En utilisant bencher run
et l’adaptateur json
, nous pouvons suivre nos benchmarks avec plusieurs Mesures grâce à la commande suivante :
🐰 Félicitations ! Vous avez appris comment suivre des benchmarks personnalisés ! 🎉