Adaptateurs de Harnais de Benchmark
Les adaptateurs convertissent la sortie de l’outil de benchmark en format JSON Bencher Metric Format (BMF). Les adaptateurs sont exécutés sur le serveur API lorsqu’un nouveau rapport est reçu. Voir l’aperçu du benchmarking pour plus de détails. Un adaptateur peut être spécifié pour la sous-commande CLI le bencher run
avec l’option --adapter
. Si aucun adaptateur n’est spécifié, l’adaptateur magic
est utilisé par défaut.
🪄 Magie (par défaut)
L’adaptateur Magic (magic
) est un superset de tous les autres adaptateurs.
Pour cette raison, il est l’adaptateur par défaut pour bencher run
.
Cependant, l’adaptateur magic
doit être utilisé uniquement pour l’exploration.
Pour obtenir les meilleurs résultats, vous devriez spécifier un adaptateur de banc d’essai :
- {…} JSON
- #️⃣ C# BenchmarkDotNet
- ➕ C++ Catch2
- ➕ C++ Google Benchmark
- 🕳 Go test -bench
- ☕️ Java Microbenchmark Harness (JMH)
- 🕸 JavaScript Benchmark.js
- 🕸 JavaScript console.time/console.timeEnd
- 🐍 Python airspeed velocity (asv)
- 🐍 Python pytest-benchmark
- ♦️ Ruby Benchmark
- 🦀 Rust libtest bench
- 🦀 Rust Criterion
- 🦀 Rust Iai
- 🦀 Rust Iai-Callgrind
- ❯_ Shell Hyperfine
{…} JSON
L’adaptateur JSON (json
) attend du JSON au format Bencher Metric Format (BMF).
Il est parfait pour intégrer des harnais de benchmark personnalisés avec Bencher.
Pour plus de détails, consultez comment suivre des benchmarks personnalisés
et la référence JSON BMF.
⏱️ Temps de Compilation
La sous-commande CLI bencher run
peut être utilisée pour suivre le temps de compilation (c’est-à-dire le temps de construction) de vos livrables avec le drapeau --build-time
. En coulisse, bencher run
génère les résultats sous forme de JSON Bencher Metric Format (BMF). Il est donc conseillé d’utiliser explicitement l’adaptateur json
. Pour plus de détails, voir comment suivre le temps de compilation.
La Mesure build-time
(à savoir secondes (s)
) est collectée. Seule la valeur du temps de compilation (c’est-à-dire value
) est disponible. Ni lower_value
ni upper_value
ne sont collectés. La Mesure build-time
n’est pas créée par défaut pour tous les Projets. Cependant, lorsque vous utilisez le drapeau --build-time
, cette Mesure sera automatiquement créée pour votre Projet.
⚖️ Taille de fichier
La sous-commande CLI bencher run
peut être utilisée pour suivre la taille du fichier (c’est-à-dire la taille binaire) de vos livrables avec l’option --file-size
. L’option --file-size
attend un chemin de fichier vers le fichier dont la taille sera mesurée. Sous le capot, bencher run
sort les résultats en format JSON Bencher Metric Format (BMF). Il est donc de bonne pratique d’utiliser explicitement l’adaptateur json
. Pour plus de détails, voir comment suivre la taille de fichier.
La Mesure de taille de fichier
(c’est-à-dire octets (B)
) est recueillie. Seule la valeur de la taille de fichier (c’est-à-dire valeur
) est disponible. Ni valeur_inférieure
ni valeur_supérieure
ne sont collectées. La Mesure de taille de fichier
n’est pas créée par défaut pour tous les Projets. Cependant, lorsque vous utilisez l’option --file-size
, cette Mesure sera automatiquement créée pour votre Projet.
L’option --file-size
peut être utilisée plusieurs fois pour suivre plusieurs tailles de fichier.
#️⃣ C# DotNet
L’adaptateur C# DotNet (c_sharp_dot_net
) attend une sortie BenchmarkDotNet au format JSON (c’est-à-dire --exporters json
).
La mesure de latence
(c’est-à-dire nanosecondes (ns)
) est recueillie.
Cette sortie JSON est sauvegardée dans un fichier, vous devez donc utiliser l’argument --file
du CLI bencher run
pour spécifier le chemin de ce fichier.
Il existe deux options pour la métrique :
moyenne
(par défaut) : Les valeursinferieure
etsuperieure
sont une déviation standard en dessous et au-dessus de la moyenne (c’est-à-direvaleur
) respectivement.mediane
: Les valeursinferieure
etsuperieure
sont un écart interquartile en dessous et au-dessus de la médiane (c’est-à-direvaleur
) respectivement.
Cela peut être spécifié dans la sous-commande CLI exécution du banc d’essai
avec l’option --average
.
➕ C++ Catch2
L’adaptateur C++ Catch2 (cpp_catch2
) attend une sortie Catch2.
La mesure de latency
(c’est-à-dire nanosecondes (ns)
) est recueillie.
Les lower_value
et upper_value
sont une déviation standard en dessous et au-dessus de la moyenne (c’est-à-dire value
) respectivement.
➕ C++ Google
L’adaptateur C++ Google (cpp_google
) nécessite un résultat Google Benchmark au format JSON (c’est-à-dire --benchmark_format=json
).
La mesure de latence
(c’est-à-dire nanosecondes (ns)
) est recueillie.
Seule la moyenne (c’est-à-dire valeur
) est disponible. Il n’y a ni valeur_inférieure
ni valeur_supérieure
.
🕳 Go Bench
L’adapteur Go Bench (go_bench
) attend la sortie de go test -bench.
La mesure de latence
(c’est-à-dire nanosecondes (ns)
) est recueillie.
Seule la moyenne (c’est-à-dire valeur
) est disponible. Il n’y a pas de lower_value
et de upper_value
.
☕️ Java JMH
L’adaptateur Java JMH (java_jmh
) attend une sortie Java Microbenchmark Harness (JMH) au format JSON (c.-à-d. -rf json
).
Cette sortie JSON est sauvegardée dans un fichier, vous devez donc utiliser l’argument --file
du CLI bencher run
pour spécifier le chemin de ce fichier.
Les mesures de latence
et de débit
(c.-à-d. nanosecondes (ns)
et opérations / seconde (ops/sec)
) peuvent être recueillies.
Les lower_value
et upper_value
sont les intervalles de confiance inférieur et supérieur pour la moyenne (c.-à-d. value
) respectivement.
🕸 Adaptateur de Benchmark JavaScript
L’Adaptateur de Benchmark JavaScript (js_benchmark
) attend une sortie de Benchmark.js.
La mesure de throughput
(c’est-à-dire opérations / seconde (ops/sec)
) est recueillie.
Les valeurs lower_value
et upper_value
sont la marge d’erreur relative en dessous et au-dessus de la médiane (c’est-à-dire value
) respectivement.
🕸 Temps JavaScript
L’adaptateur Temps JavaScript (js_time
) attend une sortie console.time/console.timeEnd.
La mesure de latence
(c’est-à-dire nanosecondes (ns)
) est recueillie.
Seul le temps d’opération (c’est-à-dire value
) est disponible. Il n’y a ni lower_value
ni upper_value
.
🐍 Adaptateur Python ASV
L’adaptateur Python ASV (python_asv
) attend la sortie de la ligne de commande airspeed velocity asv run.
La mesure de latence
(c’est-à-dire nanosecondes (ns)
) est recueillie.
Les lower_value
et upper_value
sont l’intervalle interquartile inférieur et supérieur à la médiane (c’est-à-dire value
) respectivement.
🐍 Python Pytest
L’adaptateur Python Pytest (python_pytest
) attend une sortie de pytest-benchmark au format JSON (c’est-à-dire --benchmark-json results.json
).
Cette sortie JSON est sauvegardée dans un fichier, vous devez donc utiliser l’argument --file
du CLI bencher run
pour spécifier le chemin de ce fichier.
La mesure de latence
(c’est-à-dire nanosecondes (ns)
) est recueillie.
Il y a deux options pour la Métrique :
mean
(par défaut) : Leslower_value
etupper_value
sont une déviation standard en dessous et au-dessus de la moyenne (c’est-à-direvalue
) respectivement.median
: Leslower_value
etupper_value
sont une intervalle interquartile en dessous et au-dessus de la médiane (c’est-à-direvalue
) respectivement.
Cela peut être spécifié dans la sous-commande CLI bencher run
avec l’argument optionnel --average
.
♦️ Benchmark Ruby
L’adaptateur Benchmark Ruby (ruby_benchmark
) attend la sortie du module Benchmark pour les méthodes #bm
, #bmbm
et #benchmark
.
Un libellé est requis pour chaque benchmark.
La mesure de latence
(c’est-à-dire nanosecondes (ns)
) est recueillie.
Seule la valeur rapportée (c’est-à-dire valeur
) est disponible. Il n’y a ni valeur_inférieure
ni valeur_supérieure
.
🦀 Banc de test Rust
L’adaptateur de banc de test Rust (rust_bench
) attend la sortie du banc de test libtest.
La mesure de latence
(c’est-à-dire nanosecondes (ns)
) est recueillie.
Les valeurs lower_value
et upper_value
sont l’écart en dessous et au-dessus de la médiane (c’est-à-dire valeur
) respectivement.
🦀 Critère Rust
L’adaptateur Critère Rust (rust_criterion
) attend une sortie Criterion.
La mesure de latence
(c’est-à-dire nanosecondes (ns)
) est recueillie.
Les lower_value
et upper_value
sont les limites inférieure et supérieure de la pente (si disponible) ou de la moyenne (sinon) (c’est-à-dire valeur
) respectivement.
🦀 Adaptateur Rust Iai
L’adaptateur Rust Iai (rust_iai
) attend la sortie de Iai.
Les mesures instructions
, l1-accesses
, l2-accesses
, ram-accesses
et estimated-cycles
sont recueillies.
Seules ces mesures (c’est-à-dire value
) sont disponibles. Il n’y a pas de mesures lower_value
et upper_value
.
Les mesures pour cet adaptateur ne sont pas créées par défaut pour tous les projets.
Cependant, lorsque vous utilisez cet adaptateur, ces mesures seront automatiquement créées pour votre projet.
🦀 Rust Iai-Callgrind
L’adaptateur Rust Iai (rust_iai_callgrind
) nécessite une sortie Iai-Callgrind.
Les mesures instructions
, l1-hits
, l2-hits
, ram-hits
, total-read-write
et estimated-cycles
sont recueillies.
Seulement ces mesures (c’est-à-dire value
) sont disponibles. Il n’y a pas de mesures de lower_value
et upper_value
.
Les mesures pour cet adaptateur ne sont pas créées par défaut pour tous les projets.
Cependant, lorsque vous utilisez cet adaptateur, ces mesures seront automatiquement créées pour votre Projet.
❯_️ Adaptateur Shell Hyperfine
L’adaptateur Shell Hyperfine (shell_hyperfine
) attend une sortie Hyperfine au format JSON (c’est-à-dire --export-json results.json
).
Cette sortie JSON est sauvegardée dans un fichier, donc vous devez utiliser l’argument --file
de la CLI bencher run
pour spécifier le chemin de ce fichier.
La mesure de latency
(c’est-à-dire nanosecondes (ns)
) est recueillie.
Il y a deux options pour la Métrique :
mean
(par défaut) : Les valeurslower_value
etupper_value
sont un écart-type en dessous et au-dessus de la moyenne (c’est-à-direvalue
) respectivement.median
: Les valeurslower_value
etupper_value
sont les valeursmin
etmax
respectivement.
Ceci peut être spécifié dans la sous-commande CLI bencher run
avec l’option --average
.
🐰 Félicitations! Vous avez tout appris sur les adaptateurs de harnais de benchmark! 🎉