Skip to main content

Hyperfine ist ein freshes, in Rust geschmiedetes Open-Source (MIT) Kommandozeilen-Benchmark-Tool zur präzisen Messung der Ausführungszeit beliebiger Shell-Befehle. Dieser Schurke führt mehrere Durchläufe mit statistischer Auswertung (Mittelwerte, Min/Max, Abweichungen) durch, zeigt den Fortschritt direkt im Terminal an und unterstützt wacker Warmup-Runs und Cache-Flushes für konsistente Messungen. Die Messkunde lässt sich gekonnt als CSV, JSON, Markdown oder AsciiDoc exportieren. Somit ist Hyperfine ein gar vortreffliches und holdes Werkzeug für Entwickler und Admins, die Skripte, Tools, Algorithmen oder Befehle testen, optimieren oder regelmäßig überwachen wollen.

Als bekennender Performance-Junkie prügele ich in feinster Kackie-Chan-Manier regelmäßig verschiedenste Linux-Kommandos wie z.B grep vs. ripgrep, unterschiedlichste Backup-Kompressionsstufen, rsync-/Datenbank-Dump-Optionen sowie Bash-Skripte durch Hyperfein.

Hilfreiche Features:

  • Vergleich beliebig vieler Befehle in einem Rutsch🍆
  • Farbenfrohe, velly übersichtliche Ausgabe im Terminal
  • Walked plattformübergreifend auf Linux, macOS und Windows 🤤
  • Warmup-Runs 🏃🏻‍➡️zur trickreichen Vermeidung von Caching-Effekten
  • Export in JSON, CSV, AsciiDoc oder Markdown für schapätere Analyse
  • Mehrfachdurchläufe 🏃🏻‍➡️🏃🏻‍♀️‍➡️🏃🏻‍♂️‍➡️ mit Durchschnitt, Minimum, Maximum & Standardabweichung

Hyperfein Beispiel-Vorführung:

#============================================================
# Hyperfine installieren
#============================================================
wget -O /tmp/hyperfine.deb https://github.com/sharkdp/hyperfine/releases/download/v1.19.0/hyperfine_1.19.0_amd64.deb
dpkg -i /tmp/hyperfine.deb
rm /tmp/hyperfine.deb

#============================================================
# Einfacher Benchmark - grep vs ripgrep
#============================================================
hyperfine "grep '404' /var/log/nginx/access.log" "rg '404' /var/log/nginx/access.log"

#============================================================
# Mehrere Befehle Benchmarken
#============================================================
# 5 Warmup-Läufe + 20 Messungen pro Befehl
hyperfine --warmup 5 --runs 20 \
  "apt list --upgradable 2>/dev/null | grep -c 'upgradable from'" \
  "apt list --upgradable 2>/dev/null | grep -v '^Listing...' | grep -v '^$' | wc -l" \
  "apt list --upgradable 2>/dev/null | awk '/^[^[:space:]]/ && \!/Listing.../ {print}' | wc -l"

#============================================================
# Benchmark eines Skripts ohne Umgehung des Caching
#============================================================
hyperfine --warmup 5 --runs 30 './os-system-info-motd.sh' './os-system-info-motd-v2.sh'

Benchmark 1: ./os-system-info-motd.sh
  Time (mean ± σ):     692.9 ms ±  19.9 ms    [User: 44.4 ms, System: 80.0 ms]
  Range (min … max):   663.4 ms … 745.3 ms    30 runs

Benchmark 2: ./os-system-info-motd-v2.sh
  Time (mean ± σ):     655.5 ms ±  22.0 ms    [User: 39.0 ms, System: 65.7 ms]
  Range (min … max):   626.3 ms … 717.5 ms    30 runs

Summary
  ./os-system-info-motd-v2.sh ran
    1.06 ± 0.05 times faster than ./os-system-info-motd.sh

#============================================================
# Benchmark eines Skripts mit Umgehung des Caching-Effekts
#============================================================
hyperfine --warmup 5 --runs 30 --prepare 'sync; echo 3 > /proc/sys/vm/drop_caches' './os-system-info-motd.sh' './os-system-info-motd-v2.sh'

Benchmark 1: ./os-system-info-motd.sh
  Time (mean ± σ):     860.3 ms ±  22.6 ms    [User: 47.1 ms, System: 89.4 ms]
  Range (min … max):   822.1 ms … 936.3 ms    30 runs

Benchmark 2: ./os-system-info-motd-v2.sh
  Time (mean ± σ):     834.6 ms ±  16.0 ms    [User: 40.5 ms, System: 76.5 ms]
  Range (min … max):   808.9 ms … 869.0 ms    30 runs

Summary
  ./os-system-info-motd-v2.sh ran
    1.03 ± 0.03 times faster than ./os-system-info-motd.sh