少し前に、コマンドラインユーティリティである「top」の代替案をいくつか共有しました。 。一部のユーザーから、これらのツールのどれが最適で、どのような基準(機能、寄稿者、活動年数、ページリクエストなど)に基づいて、これらのツールを比較したかと尋ねられました。彼らはまた、ベンチマークの結果があれば共有するように私に求めました。残念ながら、当時はプログラムのベンチマーク方法がわかりませんでした。 Linuxプログラムを比較するためのシンプルで使いやすいベンチマークツールを探しているときに、「ベンチ」という名前の2つのユーティリティに出くわしました。 および「超微細」 。これらは、LinuxおよびUnixライクなシステムでLinuxコマンドおよびプログラムをベンチマークするためのシンプルで使いやすいコマンドラインツールです。
1。ベンチマークツールを使用したコマンドラインからのLinuxコマンドとプログラムのベンチマーク
「ベンチ」 ユーティリティは、Haskellの基準を使用して1つ以上の特定のコマンド/プログラムをベンチマークします ライブラリを作成し、出力統計をわかりやすい形式で表示します。このツールは、ベンチマーク結果に基づいて同様のプログラムを比較する必要がある場合に役立ちます。結果をHTML形式、CSV、またはテンプレート出力にエクスポートすることもできます。
1.1。 Linuxにベンチユーティリティをインストールする
ベンチユーティリティは、3つの方法でインストールできます。
1。 Linuxbrewの使用
Linuxbrewパッケージマネージャーを使用してBenchユーティリティをインストールできます。 Linuxbrewをまだインストールしていない場合は、次のリンクを参照してください。
- Linuxbrew –LinuxおよびMacOSX用の一般的なパッケージマネージャー
Linuxbrewをインストールした後、次のコマンドを実行してBenchをインストールします。
$ brew install bench
2。 Haskellのスタックツールを使用する
まず、次のリンクの説明に従ってHaskellをインストールします。
- Haskellプログラミング言語入門
次に、次のコマンドを実行してベンチをインストールします。
$ stack setup
$ stack install bench
「スタック」はベンチを〜/ .local / binにインストールします または同様のもの。ベンチツールを使用する前に、インストールディレクトリが実行可能検索パス上にあることを確認してください。忘れた場合でも、これを行うように通知されます。
3。 Nixパッケージマネージャーの使用
ベンチをインストールする別の方法は、 Nixを使用することです。 パッケージマネージャー。以下のリンクに示すようにNixをインストールします。
- Nix –LinuxおよびUnix用の強力なパッケージマネージャー
Nixをインストールした後、次のコマンドを使用してベンチツールをインストールします:
$ nix-env -i bench
1.2。ベンチマークLinuxコマンドとベンチマークを使用したプログラム
'ls-al'コマンドの結果をベンチマークしてみましょう。これを行うには、次を実行します:
$ bench 'ls -al'
出力例:

ベンチマーク'ls'コマンド
コマンドでフラグ/オプションを使用するときは、コマンドを引用符で囲む必要があります。
同様に、システムにインストールされている任意のプログラムをベンチマークできます。次のコマンドは、「htop」および「ptop」プログラムのベンチマーク結果を示しています。
$ bench htop
$ bench ptop

ベンチマークhtopおよびptopプログラム
ベンチツールは、一度に複数のプログラムをベンチマークすることもできます。 ls、htop、ptopプログラムのベンチマーク結果は次のとおりです。
$ bench ls htop ptop
サンプル出力:

複数のプログラムのベンチマーク
ベンチマーク結果を以下のようなHTMLにエクスポートすることもできます。
$ bench htop --output example.html
結果をCSVにエクスポートするには、次のコマンドを実行します。
$ bench htop --csv FILE
ヘルプセクションを表示:
$ bench --help
2。 Hyperfineを使用したコマンドラインからのLinuxコマンドとプログラムのベンチマーク
超微細 は、上記で説明した「ベンチ」ツールに触発されたさらに別のコマンドラインベンチマークツールです。これは無料のオープンソースのクロスプラットフォームベンチマークプログラムであり、 Rustで記述されています。 プログラミング言語。以下に示すベンチツールと比較して、追加機能はほとんどありません。
- 複数の実行にわたる統計分析。
- 任意のシェルコマンドのサポート。
- ベンチマークの進捗状況と現在の見積もりに関する絶え間ないフィードバック。
- 実際のベンチマークの前にウォームアップを実行します。
- キャッシュクリアコマンドは、各タイミング実行の前に設定できます。
- 統計的外れ値の検出。
- ベンチマーク結果をCSV、JSON、Markdownなどのさまざまな形式にエクスポートします。
- パラメータ化されたベンチマーク。
2.1。 LinuxにHyperfineをインストールする
次のいずれかの方法を使用してHyperfineをインストールできます。
1。 Linuxbrewの使用
$ brew install hyperfine
2。貨物の使用
次のリンクで説明されているように、Rustがインストールされていることを確認してください。
- LinuxにRustプログラミング言語をインストールする
Rustをインストールした後、次のコマンドを実行してCargo経由でHyperfineをインストールします。
$ cargo install hyperfine
3。 AURヘルパープログラムの使用
HyperfineはAURで利用できます 。したがって、 YaY などのヘルパープログラムを使用して、Archベースのシステムにインストールできます。 、以下のように。
$ yay -S hyperfine
4。バイナリをダウンロードしてインストールします
Hyperfineは、Debianベースのシステムのバイナリで利用できます。 リリースページから最新の.debバイナリファイルをダウンロードします 'dpkg'パッケージマネージャーを使用してインストールします。このガイドを書いている時点で、最新バージョンは 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。 Hyperfineを使用したLinuxコマンドとプログラムのベンチマーク
Hyperfineを使用してベンチマークを実行するには、以下に示すように、プログラム/コマンドと一緒にベンチマークを実行するだけです。
$ hyperfine 'ls -al'

超微細を使用したベンチマークコマンド
複数のコマンド/プログラムのベンチマーク:
$ hyperfine htop ptop
サンプル出力:

超微細構造を使用して複数のプログラムをベンチマークする
出力の最後にあるように、Hyperfineは次のように述べています-「htopはptopより1.96倍速く実行されました」 、したがって、htopのパフォーマンスはPtopよりも優れているとすぐに結論付けることができます。これは、複数のプログラムのベンチマークを行うときに、どのプログラムのパフォーマンスが優れているかをすばやく見つけるのに役立ちます。ただし、Benchユーティリティではこの詳細な出力は取得されません。
Hyperfineは、各コマンドに対して実行する実行の数を自動的に決定します。デフォルトでは、少なくとも10回のベンチマーク実行を実行します 。 最小実行回数を設定する場合 (例:5回の実行)、-m
/ --min-runs
以下のようなオプション:
$ hyperfine --min-runs 5 htop ptop
または、
$ hyperfine -m 5 htop ptop
同様に、最大実行回数を実行するには コマンドごとに、コマンドは次のようになります。
$ hyperfine --max-runs 5 htop ptop
または、
$ hyperfine -M 5 htop ptop
正確な数の実行を実行することもできます 次のコマンドを使用してコマンドごとに:
$ hyperfine -r 5 htop ptop
ご存知かもしれませんが、プログラムの実行時間がディスクI / Oによって制限されている場合、ベンチマークの結果は、ディスクキャッシュと、それらがコールドかウォームかによって大きく影響を受ける可能性があります。幸い、Hyperfineには、実際のベンチマークを実行する前に、特定の数のプログラム実行を実行するオプションがあります。
実際のベンチマークの前にNUM回のウォームアップ実行(例:3)を実行するには、 -w
を使用します / --warmup
以下のようなオプション:
$ hyperfine --warmup 3 htop
ベンチユーティリティと同様に、Hyperfineを使用すると、ベンチマーク結果を特定のファイルにエクスポートすることもできます。結果をCSV、JSON、およびMarkdown形式にエクスポートできます。
たとえば、結果をMarkdown形式でエクスポートするには、次のコマンドを使用します。
$ hyperfine htop ptop --export-markdown <FILE-NAME>
その他のオプションと使用法の詳細については、ヘルプセクションを参照してください:
$ hyperfine --help
そして、今のところこれですべてです。同様の代替プログラムのベンチマークが必要な状況になったことがある場合は、これらのツールが役立つ可能性があります。