Benchmark-Harness-Adapter


Adapter konvertieren die Ausgabe des Benchmark-Harness in das Bencher Metric Format (BMF) JSON. Die Adapter werden auf dem API-Server ausgeführt, wenn ein neuer Bericht eingeht. Weitere Details finden Sie in der Übersicht über das Benchmarking. Ein Adapter kann für den bencher run CLI-Unterbefehl mit der Option --adapter angegeben werden. Wenn kein Adapter angegeben wird, wird standardmäßig der magic Adapter verwendet.

🪄 Magie (Standard)

Der Magic-Adapter (magic) ist ein Superset aller anderen Adapter. Aus diesem Grund ist er der Standardadapter für bencher run. Allerdings sollte der magic Adapter nur zur Exploration verwendet werden.

Für die besten Ergebnisse sollten Sie einen spezifischen Benchmark-Harness-Adapter angeben:


{…} JSON

Der JSON-Adapter (json) erwartet Bencher Metric Format (BMF) JSON. Er ist perfekt für die Integration von benutzerdefinierten Benchmark-Harnesses mit Bencher geeignet. Für weitere Details siehe wie man benutzerdefinierte Benchmarks verfolgt und die BMF JSON Referenz.

⚖️ Dateigröße

Der bencher run CLI-Unterbefehl kann verwendet werden, um die Dateigröße (d.h. Binärgröße) Ihrer Lieferobjekte mit der Option --file-size zu verfolgen. Die Option --file-size erwartet einen Dateipfad zu der Datei, deren Größe gemessen wird. Unter der Haube gibt bencher run die Ergebnisse alsBencher-Metrik-Format (BMF) JSON aus. Es ist daher ratsam, ausdrücklich den json-Adapter zu verwenden. Für weitere Details siehe wie man die Dateigröße verfolgt.

Die file-size-Messung (d.h. Bytes (B)) wird erfasst. Nur der Wert der Dateigröße (d.h. value) ist verfügbar. Weder lower_value noch upper_value werden gesammelt. Die file-size-Messung wird nicht standardmäßig für alle Projekte erstellt. Wenn Sie jedoch die Option --file-size verwenden, wird diese Messung automatisch für Ihr Projekt erstellt.


#️⃣ C# DotNet

Der C# DotNet Adapter (c_sharp_dot_net) erwartet BenchmarkDotNet-Ausgabe im JSON-Format (d.h. --exporters json). Die latency-Messung (d.h. Nanosekunden (ns)) wird gesammelt.

Es gibt zwei Optionen für die Metrik:

  • mean (Standard): Die lower_value und upper_value sind eine Standardabweichung unter und über dem Mittelwert (d.h. value) entsprechend.
  • median: Die lower_value und upper_value sind einen Interquartilabstand unter und über dem Median (d.h. value) entsprechend.

Dies kann im bencher run CLI-Unterbefehl mit der Option --average angegeben werden.


➕ C++ Catch2

Der C++ Catch2 Adapter (cpp_catch2) erwartet Catch2-Ausgabe. Die latency Messung (d.h. Nanosekunden (ns)) wird erfasst. Die lower_value und upper_value sind jeweils eine Standardabweichung unter und über dem Mittelwert (d.h. value).

➕ C++ Google

Der C++ Google Adapter (cpp_google) erwartet Ausgaben von Google Benchmark im JSON-Format (d.h. --benchmark_format=json). Die latency Messung (d.h. Nanosekunden (ns)) wird erfasst. Nur der Durchschnittswert (d.h. value) ist verfügbar. Es gibt keinen lower_value und keinen upper_value.


🕳 Go Bench

Der Go Bench Adapter (go_bench) erwartet go test -bench Ausgabe. Das latency Maß (d.h. Nanosekunden (ns)) wird erfasst. Nur der Mittelwert (d.h. Wert) ist verfügbar. Es gibt keinen lower_value und upper_value.


☕️ Java JMH

Der Java-JMH-Adapter (java_jmh) erwartet Ausgaben des Java Microbenchmark Harness (JMH) im JSON-Format (d.h. -rf json). Es können sowohl latency als auch throughput Messungen (d.h. Nanosekunden (ns) und Operationen / Sekunde (ops/sec)) erfasst werden. Die lower_value und upper_value sind die unteren und oberen Konfidenzintervalle für den Mittelwert (d.h. value) bzw.


🕸 JavaScript-Benchmark

Der JavaScript-Benchmark-Adapter (js_benchmark) erwartet eine Ausgabe von Benchmark.js. Die throughput Messung (d.h. Operationen / Sekunde (ops/sec)) wird gesammelt. Die lower_value und upper_value sind die relative Fehlerspanne unterhalb und oberhalb des Medianwerts (d.h. value) bzw.

🕸 JavaScript-Zeit

Der JavaScript-Zeit-Adapter (js_time) erwartet console.time/console.timeEnd-Ausgaben. Die latency-Messung (d.h. Nanosekunden (ns)) wird erfasst. Nur die Operationszeit (d.h. Wert) ist verfügbar. Es gibt keine lower_value und upper_value.


🐍 Python ASV

Der Python ASV-Adapter (python_asv) erwartet die Ausgabe des airspeed velocity CLI-Befehls asv run. Die latency-Messung (d.h. Nanosekunden (ns)) wird erfasst. Die lower_value und upper_value sind das untere und obere Interquartil, jeweils unterhalb und oberhalb des Medians (d.h. value).

🐍 Python Pytest

Der Python Pytest Adapter (python_pytest) erwartet pytest-benchmark Ausgaben im JSON-Format (d.h. --benchmark-json results.json). Diese JSON-Ausgabe wird in einer Datei gespeichert, daher müssen Sie das bencher run CLI --file Argument verwenden, um diesen Dateipfad anzugeben (d.h. bencher run --file results.json "pipenv run pytest --benchmark-json results.json benchmarks.py"). Die latency Messung (d.h. Nanosekunden (ns)) wird erfasst.

Es gibt zwei Optionen für die Metrik:

  • mean (Standard): Der lower_value und upper_value liegen eine Standardabweichung unter bzw. über dem Mittelwert (d.h. value).
  • median: Der lower_value und upper_value liegen einen Interquartilsabstand unter bzw. über dem Median (d.h. value).

Dies kann im bencher run CLI Unterbefehl mit dem optionalen --average Argument angegeben werden.


♦️ Ruby Benchmark

Der Ruby Benchmark Adapter (ruby_benchmark) erwartet die Ausgabe des Benchmark-Moduls für die Methoden #bm, #bmbm und #benchmark. Ein Label ist für jeden Benchmark erforderlich. Die Latenz-Messung (d.h. Nanosekunden (ns)) wird erfasst. Nur der berichtete Wert (d.h. Wert) ist verfügbar. Es gibt keinen unteren_wert und oberen_wert.


🦀 Rust Bench

Der Rust Bench Adapter (rust_bench) erwartet eine Ausgabe von libtest bench. Die latency Messung (d.h. Nanosekunden (ns)) wird erfasst. Der lower_value und upper_value sind die Abweichungen unterhalb und oberhalb des Medians (d.h. value) jeweils.

🦀 Rust Criterion

Der Rust Criterion Adapter (rust_criterion) erwartet Ausgaben von Criterion. Die latency Messung (d.h. Nanosekunden (ns)) wird erfasst. Die lower_value und upper_value sind die unteren und oberen Grenzwerte entweder der Steigung (falls verfügbar) oder des Mittelwerts (falls nicht) (d.h. Wert) jeweils.

🦀 Rust Iai

Der Rust Iai-Adapter (rust_iai) erwartet die Ausgabe von Iai. Die Maße instructions, l1_access, l2_access, ram_access und estimated_cycles werden erfasst. Nur diese Maße (d.h. value) sind verfügbar. Es gibt keine Maße für lower_value und upper_value. Die Maße für diesen Adapter werden nicht standardmäßig für alle Projekte erstellt. Wenn Sie jedoch diesen Adapter verwenden, werden diese Maße automatisch für Ihr Projekt erstellt.

🦀 Rust Iai-Callgrind

Der Rust Iai Adapter (rust_iai_callgrind) erwartet eine Ausgabe von Iai-Callgrind. Die Maße instructions, l1_access, l2_access, ram_access, total_accesses und estimated_cycles werden gesammelt. Nur diese Maße (d.h. value) sind verfügbar. Es gibt keine Maße für lower_value und upper_value. Die Maße für diesen Adapter werden nicht standardmäßig für alle Projekte erstellt. Wenn Sie diesen Adapter jedoch verwenden, werden diese Maße automatisch für Ihr Projekt erstellt.


❯_️ Shell Hyperfine

Der Shell Hyperfine Adapter (shell_hyperfine) erwartet Hyperfine-Ausgaben im JSON-Format (dh --export-json results.json). Diese JSON-Ausgabe wird in einer Datei gespeichert, daher müssen Sie das --file Argument der bencher run CLI verwenden, um diesen Dateipfad anzugeben (dh bencher run --file results.json "hyperfine --export-json results.json 'sleep 0.1'"). Die latency Messung (dh Nanosekunden (ns)) wird erfasst.

Es gibt zwei Optionen für die Metrik:

  • mean (Standard): Der lower_value und upper_value liegen jeweils eine Standardabweichung unter bzw. über dem Mittelwert (dh value).
  • median: Der lower_value und upper_value sind jeweils die min und max Werte.

Dies kann im bencher run CLI-Unterbefehl mit der --average Option angegeben werden.



🐰 Herzlichen Glückwunsch! Sie haben alles über Benchmark-Harness-Adapter gelernt! 🎉


Weiter geht’s: Schwellenwerte & Warnungen ➡

🤖 Dieses Dokument wurde automatisch von OpenAI GPT-4 generiert. Es ist möglicherweise nicht korrekt und kann Fehler enthalten. Wenn Sie Fehler finden, öffnen Sie bitte ein Problem auf GitHub.


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