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

0 ответов

Другие вопросы по тегам