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

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.

⚖️ 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.


#️⃣ 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.

Il existe deux options pour la métrique :

  • moyenne (par défaut) : Les valeurs inferieure et superieure sont une déviation standard en dessous et au-dessus de la moyenne (c’est-à-dire valeur) respectivement.
  • mediane : Les valeurs inferieure et superieure sont un écart interquartile en dessous et au-dessus de la médiane (c’est-à-dire valeur) 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). 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 (c’est-à-dire bencher run --file results.json "pipenv run pytest --benchmark-json results.json benchmarks.py"). La mesure de latence (c’est-à-dire nanosecondes (ns)) est recueillie.

Il y a deux options pour la Métrique :

  • mean (par défaut) : Les lower_value et upper_value sont une déviation standard en dessous et au-dessus de la moyenne (c’est-à-dire value) respectivement.
  • median : Les lower_value et upper_value sont une intervalle interquartile en dessous et au-dessus de la médiane (c’est-à-dire value) 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_access, l2_access, ram_access 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_access, l2_access, ram_access, total_accesses 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 (c’est-à-dire bencher run --file results.json "hyperfine --export-json results.json 'sleep 0.1'"). 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 valeurs lower_value et upper_value sont un écart-type en dessous et au-dessus de la moyenne (c’est-à-dire value) respectivement.
  • median : Les valeurs lower_value et upper_value sont les valeurs min et max 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! 🎉


Continuez: Seuils & Alertes ➡

🤖 Ce document a été automatiquement généré par OpenAI GPT-4. Il peut ne pas être précis et peut contenir des erreurs. Si vous trouvez des erreurs, veuillez ouvrir une issue sur GitHub.


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Thu, May 9, 2024 at 5:17:00 PM UTC