Mengapa string di sini di bash lebih lambat daripada mengirim input ke perintah?


2

Saya membandingkan waktu eksekusi untuk unix di sini-string dan input data pipa ke bc:

pipa

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.

di sini-string

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

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

(nilai-nilai ini rata-rata: berkali-kali diuji)

Jadi realwaktu eksekusi dengan menggunakan string di sini lebih besar daripada menggunakan pipa, tetapi jumlah user+ syskali masih lebih sedikit dalam kasus string di sini seperti yang saya harapkan sebelumnya (gema ... | dieksekusi dalam proses baru, jadi ada overhead eksekusi). Mengapa perilaku pesta aneh seperti itu?

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.