如何从命令行对 Linux 命令和程序进行基准测试

前段时间分享了几个 ‘top’ 的替代品,命令行实用程序. 一些用户问我这些工具中哪一个是最好的,以及在什么基础上(如功能、贡献者、活跃年数、页面请求等)我比较了这些工具。 他们还要求我分享基准测试结果,如果我有的话。 不幸的是,当时我不知道如何对程序进行基准测试。 在寻找一些简单易用的基准测试工具来比较 Linux 程序时,我偶然发现了两个名为 ‘长椅’‘超精细’. 这些是简单易用的命令行工具,用于在 Linux 和类 Unix 系统上对 Linux 命令和程序进行基准测试。

1. 使用 Bench Tool 从命令行对 Linux 命令和程序进行基准测试

‘长椅’ 实用程序使用基准测试一个或多个给定的命令/程序 哈斯克尔准则 库并以易于理解的格式显示输出统计信息。 当您需要根据基准测试结果比较类似程序时,此工具会很有帮助。 我们还可以将结果导出为 HTML 格式或 CSV 或模板输出。

1.1。 在 Linux 中安装 Bench 实用程序

bench 实用程序可以通过三种方法安装。

1. 使用 Linuxbrew

我们可以使用 Linuxbrew 包管理器安装 Bench 实用程序。 如果您尚未安装 Linuxbrew,请参阅以下链接。

  • Linuxbrew – 适用于 Linux 和 Mac OS X 的通用包管理器

安装 Linuxbrew 后,运行以下命令安装 Bench:

$ brew install bench

2.使用Haskell的堆栈工具

首先,按照以下链接中的说明安装 Haskell。

  • Haskell 编程语言入门

然后,运行以下命令来安装 Bench。

$ stack setup
$ stack install bench

“堆栈”将安装工作台到 ~/.local/bin 或类似的东西。 在使用 bench 工具之前,请确保安装目录位于您的可执行搜索路径中。 即使您忘记了,也会提醒您这样做。

3. 使用 Nix 包管理器

另一种安装 Bench 的方法是使用 尼克斯 包管理器。 安装 Nix,如下面的链接所示。

  • Nix – 适用于 Linux 和 Unix 的强大包管理器

安装 Nix 后,使用以下命令安装 Bench 工具:

$ nix-env -i bench

1.2. 使用 Bench 对 Linux 命令和程序进行基准测试

让我们对“ls -al”命令的结果进行基准测试。 为此,请运行:

$ bench 'ls -al'

样本输出:

基准 ‘ls’ 命令

当您对它们使用标志/选项时,您必须引用这些命令。

同样,您可以对系统中安装的任何程序进行基准测试。 以下命令显示了“htop”和“ptop”程序的基准测试结果。

$ bench htop
$ bench ptop

基准 htop 和 ptop 程序

Bench 工具也可以同时对多个程序进行基准测试。 这是 ls、htop、ptop 程序的基准测试结果。

$ bench ls htop ptop

样本输出:

基准测试命令 3

对多个程序进行基准测试

我们还可以将基准测试结果导出为 HTML,如下所示。

$ bench htop --output example.html

要将结果导出到 CSV,只需运行:

$ bench htop --csv FILE

查看帮助部分:

$ bench --help

2. 使用 Hyperfine 从命令行对 Linux 命令和程序进行基准测试

超精细 是另一个受我们上面讨论的“Bench”工具启发的命令行基准测试工具。 它是免费的、开源的、跨平台的基准测试程序,用 编程语言。 与下面列出的 Bench 工具相比,它几乎没有其他功能。

  • 跨多次运行的统计分析。
  • 支持任意 shell 命令。
  • 关于基准进度和当前估计的持续反馈。
  • 在实际基准测试之前执行预热运行。
  • 可以在每次计时运行之前设置缓存清除命令。
  • 统计异常值检测。
  • 将基准测试结果导出为各种格式,例如 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 辅助程序

超精细可用于 AUR. 因此,您可以使用任何帮助程序将其安装在基于 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

就像 Bench 实用程序一样,Hyperfine 还允许我们将基准测试结果导出到给定文件。 我们可以将结果导出为 CSV、JSON 和 Markdown 格式。

例如,要以 Markdown 格式导出结果,请使用以下命令:

$ hyperfine htop ptop --export-markdown <FILE-NAME>

有关更多选项和使用详细信息,请参阅帮助部分:

$ hyperfine --help

而且,这就是现在的全部。 如果您曾经遇到过需要对类似和替代程序进行基准测试的情况,这些工具可能会有所帮助。

资源:

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!