GNU/Linux >> Belajar Linux >  >> Linux

Apa overhead menggunakan subkulit?

Subkulit memang memiliki overhead.

Di sistem saya, biaya fork-exec minimal (saat Anda menjalankan program dari disk saat file tidak dingin) adalah sekitar 2ms dan biaya forking minimal adalah sekitar 1ms .

Dengan subkulit, Anda membicarakan biaya forking saja, karena tidak ada file yang perlu exec ed. Jika subkulit dibuat rendah, 1ms cukup diabaikan dalam program yang dihadapi manusia. Saya yakin manusia tidak dapat melihat apa pun yang terjadi lebih cepat dari 50ms (dan itu cenderung memakan waktu lama bagi penerjemah bahasa scripting modern untuk memulai (saya berbicara python dan ruby ​​di rvm di sini) dengan nodejs terbaru menggunakan sekitar 100ms ).

Namun, itu bertambah dengan loop, dan kemudian Anda mungkin ingin mengganti misalnya bactick yang agak umum atau $() pola tempat Anda return sesuatu dari suatu fungsi dengan mencetaknya ke stdout untuk shell induk untuk catpure dengan bashisms seperti printf -v (atau gunakan program eksternal cepat untuk memproses seluruh batch).

Paket penyelesaian-bash secara khusus menghindari biaya subkulit ini dengan mengembalikan melalui nama variabel yang diteruskan menggunakan teknik yang dijelaskan di http://fvue.nl/wiki/Bash:_Passing_variables_by_reference

Membandingkan

time for((i=0;i<10000;i++)); do echo "$(echo hello)"; done >/dev/null 

dengan

time for((i=0;i<10000;i++)); do echo hello; done >/dev/null 

harus memberi Anda perkiraan yang baik tentang apa fork sistem Anda -ing overhead adalah.


Linux
  1. Apa cara termudah untuk SSH menggunakan Python?

  2. Apa yang dimaksud dengan POSIX?

  3. Apa perbedaan antara menggunakan _exit() &exit() di Linux fork-exec konvensional?

  1. Apa perbedaan antara menginstal paket menggunakan pip vs. apt-get?

  2. Apa perbedaan antara menggunakan `sh` dan `source`?

  3. Bagaimana cara mengetahui apa yang menghabiskan semua ruang di partisi / saya?

  1. Linux vs. Unix:Apa bedanya?

  2. Apa itu Rolling Release Linux dan Apa Manfaat Nyata Menggunakannya

  3. Apa itu tautan emas?