Я сравнил время выполнения 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 ... | выполняется в новый процесс, поэтому накладные расходы выполняются). Почему такое странное поведение Баш?