awk 和 bc 哪一种对于浮点运算更有效?

Lyn*_*ynx 1 linux bash performance awk bc

我正在用 bash 编写一个系统性能脚本。我想以百分比形式计算 CPU 使用率。我有两种实现,一种使用 awk,另一种使用 bc。我想知道这两个版本哪个更有效。使用 awk 还是 bc 进行浮点计算更好?谢谢!

版本 #1(使用 bc)

CPU=$(mpstat 1 1 | grep "Average" | awk '{print $11}')
CPU=$(echo "scale=2;(100-$CPU)" | bc -l)
echo $CPU
Run Code Online (Sandbox Code Playgroud)

版本#2(使用 awk)

CPU=$(mpstat 1 1 | grep "Average" | awk '{idle = $11} {print 100 - idle}')
echo $CPU
Run Code Online (Sandbox Code Playgroud)

Mat*_*Mat 5

由于两者的处理时间都很短,因此产生最少数量的进程和子 shell 的版本将“更高效”。

这是你的第二个例子。

但是您可以通过消除以下内容使其变得更加简单grep

CPU=$(mpstat 1 1 | awk '/Average/{print 100 - $11}')
Run Code Online (Sandbox Code Playgroud)