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
- #️⃣ 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
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.
Die Option --file-size
kann mehrfach verwendet werden, um mehrere Dateigrößen zu verfolgen.
#️⃣ 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.
Diese JSON-Ausgabe wird in einer Datei gespeichert, daher müssen Sie das bencher run
CLI --file
Argument verwenden, um diesen Dateipfad anzugeben.
Es gibt zwei Optionen für die Metrik:
mean
(Standard): Dielower_value
undupper_value
sind eine Standardabweichung unter und über dem Mittelwert (d.h.value
) entsprechend.median
: Dielower_value
undupper_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
).
Diese JSON-Ausgabe wird in einer Datei gespeichert, daher müssen Sie das bencher run
CLI --file
Argument verwenden, um diesen Dateipfad anzugeben.
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.
Die latency
Messung (d.h. Nanosekunden (ns)
) wird erfasst.
Es gibt zwei Optionen für die Metrik:
mean
(Standard): Derlower_value
undupper_value
liegen eine Standardabweichung unter bzw. über dem Mittelwert (d.h.value
).median
: Derlower_value
undupper_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-accesses
, l2-accesses
, ram-accesses
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-hits
, l2-hits
, ram-hits
, total-read-write
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.
Die latency
Messung (dh Nanosekunden (ns)
) wird erfasst.
Es gibt zwei Optionen für die Metrik:
mean
(Standard): Derlower_value
undupper_value
liegen jeweils eine Standardabweichung unter bzw. über dem Mittelwert (dhvalue
).median
: Derlower_value
undupper_value
sind jeweils diemin
undmax
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! 🎉