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