Vor einiger Zeit habe ich ein paar Alternativen zu ‚top‘, dem Befehlszeilenprogramm, geteilt . Einige der Benutzer haben mich gefragt, welches dieser Tools das beste ist und auf welcher Grundlage (wie Funktionen, Mitwirkende, aktive Jahre, Seitenanfragen usw.) ich diese Tools verglichen habe. Sie baten mich auch, die Benchmarking-Ergebnisse zu teilen, falls ich welche habe. Leider wusste ich damals noch nicht, wie man Programme bewertet. Bei der Suche nach einfachen und benutzerfreundlichen Benchmarking-Tools zum Vergleichen von Linux-Programmen bin ich auf zwei Dienstprogramme namens 'Bench' gestoßen und 'Hyperfine' . Dies sind einfache und benutzerfreundliche Befehlszeilentools zum Benchmarking von Linux-Befehlen und -Programmen auf Linux- und Unix-ähnlichen Systemen.
1. Benchmarking von Linux-Befehlen und -Programmen über die Befehlszeile mit Bench Tool
Die 'Bank' Dienstprogramm bewertet einen oder mehrere gegebene Befehle/Programme unter Verwendung des Haskell-Kriteriums Bibliothek und zeigt die Ausgabestatistiken in einem leicht verständlichen Format an. Dieses Tool kann hilfreich sein, wenn Sie ähnliche Programme basierend auf dem Benchmarking-Ergebnis vergleichen müssen. Wir können die Ergebnisse auch in das HTML-Format oder CSV- oder Vorlagenformat exportieren.
1.1. Installieren Sie das Bench-Dienstprogramm unter Linux
Das Bankdienstprogramm kann auf drei Arten installiert werden.
1. Verwendung von Linuxbrew
Wir können das Bench-Dienstprogramm mit dem Linuxbrew-Paketmanager installieren. Wenn Sie Linuxbrew noch nicht installiert haben, sehen Sie sich den folgenden Link an.
- Linuxbrew – Ein gemeinsamer Paketmanager für Linux und Mac OS X
Führen Sie nach der Installation von Linuxbrew den folgenden Befehl aus, um Bench zu installieren:
$ brew install bench
2. Verwenden des Stack-Tools von Haskell
Installieren Sie zunächst Haskell wie im folgenden Link beschrieben.
- Erste Schritte mit der Programmiersprache Haskell
Führen Sie dann die folgenden Befehle aus, um Bench zu installieren.
$ stack setup
$ stack install bench
Der „Stack“ installiert Bench nach ~/.local/bin oder etwas ähnliches. Stellen Sie sicher, dass sich das Installationsverzeichnis in Ihrem ausführbaren Suchpfad befindet, bevor Sie das Bench-Tool verwenden. Sie werden daran erinnert, auch wenn Sie es vergessen haben.
3. Verwenden des Nix-Paketmanagers
Eine andere Möglichkeit, Bench zu installieren, ist die Verwendung von Nix Paket-Manager. Installieren Sie Nix wie im folgenden Link gezeigt.
- Nix – Ein leistungsstarker Paketmanager für Linux und Unix
Installieren Sie nach der Installation von Nix das Bench-Tool mit dem Befehl:
$ nix-env -i bench
1.2. Benchmarken von Linux-Befehlen und -Programmen mit Bench
Lassen Sie uns das Ergebnis des Befehls ‚ls -al‘ vergleichen. Führen Sie dazu Folgendes aus:
$ bench 'ls -al'
Beispielausgabe:
Benchmark-'ls'-Befehl
Sie müssen die Befehle in Anführungszeichen setzen, wenn Sie Flags/Optionen mit ihnen verwenden.
In ähnlicher Weise können Sie alle auf Ihrem System installierten Programme bewerten. Die folgenden Befehle zeigen das Benchmarking-Ergebnis von 'htop'- und 'ptop'-Programmen.
$ bench htop
$ bench ptop
Benchmarking von htop- und ptop-Programmen
Das Bench-Tool kann auch mehrere Programme gleichzeitig bewerten. Hier ist das Benchmarking-Ergebnis der Programme ls, htop, ptop.
$ bench ls htop ptop
Beispielausgabe:
Benchmarken mehrerer Programme
Wir können das Benchmark-Ergebnis auch wie unten in ein HTML exportieren.
$ bench htop --output example.html
Um das Ergebnis in CSV zu exportieren, führen Sie einfach Folgendes aus:
$ bench htop --csv FILE
Hilfebereich anzeigen:
$ bench --help
2. Benchmarking von Linux-Befehlen und -Programmen über die Befehlszeile mit Hyperfine
Hyperfein ist ein weiteres Befehlszeilen-Benchmarking-Tool, das von dem oben besprochenen „Bench“-Tool inspiriert ist. Es ist ein kostenloses, plattformübergreifendes Open-Source-Benchmarking-Programm und in Rust geschrieben Programmiersprache. Es hat im Vergleich zum unten aufgeführten Bench-Tool nur wenige zusätzliche Funktionen.
- Statistische Analyse über mehrere Läufe hinweg.
- Unterstützung für beliebige Shell-Befehle.
- Ständiges Feedback über den Benchmark-Fortschritt und aktuelle Schätzungen.
- Führen Sie Aufwärmläufe vor dem eigentlichen Benchmark durch.
- Cache-Löschbefehle können vor jedem Zeitmessungslauf eingerichtet werden.
- Statistische Ausreißererkennung.
- Exportieren Sie Benchmark-Ergebnisse in verschiedene Formate wie CSV, JSON, Markdown.
- Parametrisierte Benchmarks.
2.1. Installieren Sie Hyperfine unter Linux
Wir können Hyperfine mit einer der folgenden Methoden installieren.
1. Verwendung von Linuxbrew
$ brew install hyperfine
2. Fracht verwenden
Stellen Sie sicher, dass Sie Rust wie im folgenden Link beschrieben installiert haben.
- Installieren Sie die Programmiersprache Rust unter Linux
Führen Sie nach der Installation von Rust den folgenden Befehl aus, um Hyperfine über Cargo zu installieren:
$ cargo install hyperfine
3. Verwenden von AUR-Hilfsprogrammen
Hyperfein ist in AUR verfügbar . Sie können es also mit beliebigen Hilfsprogrammen wie YaY auf Arch-basierten Systemen installieren , wie unten.
$ yay -S hyperfine
4. Laden Sie die Binärdateien herunter und installieren Sie sie
Hyperfine ist in Binärdateien für Debian-basierte Systeme verfügbar. Laden Sie die neueste .deb-Binärdatei von der Versionsseite herunter und installieren Sie es mit dem Paketmanager ‚dpkg‘. Zum Zeitpunkt der Erstellung dieses Leitfadens war die neueste Version 1.4.0 .
$ wget https://github.com/sharkdp/hyperfine/releases/download/v1.4.0/hyperfine_1.4.0_amd64.deb
$ sudo dpkg -i hyperfine_1.4.0_amd64.deb
$ sudo apt install -f
2.2. Benchmarken von Linux-Befehlen und -Programmen mit Hyperfine
Um einen Benchmark mit Hyperfine auszuführen, führen Sie ihn einfach zusammen mit dem Programm/Befehl aus, wie unten gezeigt.
$ hyperfine 'ls -al'
Benchmark-Befehle mit hyperfine
Vergleichen Sie mehrere Befehle/Programme:
$ hyperfine htop ptop
Beispielausgabe:
Benchmarken Sie mehrere Programme mit hyperfine
Wie Sie am Ende der Ausgabe sehen können, erwähnt Hyperfine - 'htop lief 1,96-mal schneller als ptop' , sodass wir sofort schlussfolgern können, dass htop besser abschneidet als Ptop. Auf diese Weise können Sie beim Benchmarking mehrerer Programme schnell feststellen, welches Programm besser abschneidet. Wir erhalten diese detaillierte Ausgabe jedoch nicht im Bench-Dienstprogramm.
Hyperfine bestimmt automatisch die Anzahl der für jeden Befehl auszuführenden Läufe. Standardmäßig führt es mindestens 10 Benchmarking-Durchläufe durch . Wenn Sie die Mindestanzahl von Läufen festlegen möchten (z. B. 5 Läufe), verwenden Sie den -m
/--min-runs
Option wie unten:
$ hyperfine --min-runs 5 htop ptop
Oder,
$ hyperfine -m 5 htop ptop
Ebenso, um die maximale Anzahl von Läufen auszuführen für jeden Befehl wäre der Befehl:
$ hyperfine --max-runs 5 htop ptop
Oder,
$ hyperfine -M 5 htop ptop
Wir können sogar eine genaue Anzahl von Läufen durchführen für jeden Befehl mit dem folgenden Befehl:
$ hyperfine -r 5 htop ptop
Wie Sie vielleicht wissen, können die Benchmarking-Ergebnisse stark von Festplatten-Caches und davon, ob sie kalt oder warm sind, beeinflusst werden, wenn die Programmausführungszeit durch Festplatten-I/O begrenzt ist. Glücklicherweise hat Hyperfine die Möglichkeit, eine bestimmte Anzahl von Programmausführungen durchzuführen, bevor der eigentliche Benchmark durchgeführt wird.
Um NUM Aufwärmläufe (z. B. 3) vor dem eigentlichen Benchmark durchzuführen, verwenden Sie das -w
/ --warmup
Option wie unten:
$ hyperfine --warmup 3 htop
Genau wie das Dienstprogramm Bench ermöglicht uns Hyperfine auch, die Benchmark-Ergebnisse in eine bestimmte Datei zu exportieren. Wir können die Ergebnisse in die Formate CSV, JSON und Markdown exportieren.
Um beispielsweise die Ergebnisse im Markdown-Format zu exportieren, verwenden Sie den folgenden Befehl:
$ hyperfine htop ptop --export-markdown <FILE-NAME>
Weitere Optionen und Einzelheiten zur Verwendung finden Sie im Hilfeabschnitt:
$ hyperfine --help
Und das ist alles für jetzt. Wenn Sie jemals in einer Situation waren, in der Sie ähnliche und alternative Programme bewerten mussten, könnten diese Tools hilfreich sein.