Почему здесь-строки в bash медленнее, чем передача ввода в команду?

666
static

Я сравнил время выполнения Unix-строк и ввода данных канала bc:

труба

time for i in  do echo "sqrt(5.09)" | bc -q > /dev/null done   real 0m3.584s user 0m0.899s sys 0m2.404s 

против

здесь-строка

time for i in  do bc -q <<< "sqrt(5.09)" > /dev/null done  real 0m5.137s user 0m0.686s sys 0m2.262s 

(эти значения являются средними: проверено много раз)

Таким образом, время realвыполнения с использованием here-строк больше, чем с использованием каналов, но сумма user+ sysраз в случае здесь-строк все же меньше, чем я изначально ожидал (echo ... | выполняется в новом процессе, так что есть накладные расходы на исполнение). Почему такое странное поведение Баш?

2

0 ответов на вопрос