2

Я сравнил время выполнения 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-строк больше, чем с использованием конвейеров, но сумма значений user + sys все еще меньше в случае here-строк, как я и ожидал (echo ... | выполняется в новый процесс, поэтому накладные расходы выполняются). Почему такое странное поведение Баш?

0