为什么 bash 中的此处字符串比通过管道输入命令的速度慢?

为什么 bash 中的此处字符串比通过管道输入命令的速度慢?

我比较了 unix 字符串和管道数据输入的执行时间bc

管道

time for i in {1..1000}
  do
    echo "sqrt(5.09)" | bc -q > /dev/null
  done


real    0m3.584s
user    0m0.899s
sys     0m2.404s

对比

此处字符串

time for i in {1..1000}
  do
    bc -q <<< "sqrt(5.09)" > /dev/null
  done

real    0m5.137s
user    0m0.686s
sys     0m2.262s

(这些值是平均值:经过多次测试)

因此,real使用 here-strings 的执行时间比使用管道的执行时间更长,但使用here-strings 时user+sys次数的总和仍然比我最初预期的要少(echo ... | 在新的进程中执行,因此存在执行开销)。为什么 bash 的行为如此奇怪?

相关内容