Por que as strings here no bash são mais lentas do que o piping da entrada para um comando?

2

Eu comparei o tempo de execução para unix here-strings e pipe data input para bc :

pipe

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

vs

aqui-strings

time for i in {1..1000}
  do
    bc -q <<< "sqrt(5.09)" > /dev/null
  done

real    0m5.137s
user    0m0.686s
sys     0m2.262s

(estes valores são médios: testados várias vezes)

Portanto, o tempo de execução de real com o uso de strings aqui é maior do que com os pipes, mas a soma do user + sys times ainda é menor no caso de aqui-strings como eu esperava inicialmente (echo ... | é executado em um novo processo, portanto há uma sobrecarga de execução). Por que um comportamento tão estranho de bash?

    
por static 02.06.2013 / 11:53

0 respostas