Saya menemukan posting membahas kecepatan forking di Cygwin, memberikan 'fork rate' yang diharapkan di Windows XP sekitar 30-50 per detik ( tautan )
Saya punya duo Core 2 (1.79GHz) yang saya harapkan akan mendapatkan hasil yang sebanding, tetapi hanya mengelola sekitar 8 garpu per detik (dan kadang-kadang jauh lebih sedikit):
$ while (true); do date --utc; done | uniq -c
5 Wed Apr 21 12:38:10 UTC 2010
6 Wed Apr 21 12:38:11 UTC 2010
1 Wed Apr 21 12:38:12 UTC 2010
1 Wed Apr 21 12:38:13 UTC 2010
8 Wed Apr 21 12:38:14 UTC 2010
8 Wed Apr 21 12:38:15 UTC 2010
6 Wed Apr 21 12:38:16 UTC 2010
1 Wed Apr 21 12:38:18 UTC 2010
9 Wed Apr 21 12:38:19 UTC 2010
Bisakah Anda menyarankan sesuatu yang saya bisa lakukan untuk mempercepat? Mesin ini bertindak jauh lebih lambat di Cygwin daripada yang lain saya gunakan sebelumnya yang benar-benar berada jauh lebih lambat.
Memperbarui
Biarkan saya membenarkan pertanyaan saya: Saya tidak percaya bahwa memiliki garpu yang lebih cepat secara ajaib akan membuat hidup saya lebih baik, tetapi saya percaya bahwa tolok ukur ini adalah proksi yang baik untuk masalah kinerja yang saya lihat di bash karena penggunaan normal executable eksternal untuk menghitung nilai. Saya menemukan saya mendapatkan kecepatan nyata pada Cygwin dengan melewati shell saya memulai skrip dan bash-completion dan mencoba mengganti perintah eksternal dengan yang internal; di Linux ini bukan masalah. Namun, seringkali, ini tidak mungkin, dan PC saya sekarang mengambil ~ 14s untuk memulai shell dengan cache hangat dan tanpa beban.
Jawaban:
Ini tidak ada hubungannya dengan garpu yang lambat.
Saya telah melihat cygwin menjalankan anjing lambat ketika direktori "home" windows berada pada drive jaringan. Setiap perintah akan mencari di sana binari memperlambat segalanya dengan sangat cepat.
Lihat jika
lebih cepat, jika demikian, itu mungkin masalah Anda
kalau tidak coba jalankan bash melalui strace / ltrace (jika mereka bahkan bekerja di cygwin) dan lihat apa yang dilakukannya ketika dibutuhkan 1 detik untuk mengeksekusi tanggal.
sumber
Saya khawatir tidak banyak yang dapat Anda lakukan tentang ini.
Windows tidak memiliki
fork()
syscall asli sehingga Cygwin harus meniru ini. Namun implementasi dari emulasi ini sangat tidak efisien. (Lihat FAQ Cygwin )MSYS2, yang sering digunakan dalam aplikasi di mana seseorang menginginkan lingkungan baris perintah seperti Linux yang mungkin berfitur lengkap di Windows, didasarkan pada Cygwin, yang karenanya juga dipengaruhi oleh ini.
Ini sebenarnya sangat buruk, bahwa
fork()
pada Windows setidaknya satu urutan besarnya lebih lambat daripada di LinuxContoh di atas menunjukkan perbedaan antara i5-2500k @ 4GHz, 32GiB RAM Windows 10 Pro box vs. 1GiB RAM VPS 1 inti yang lemah.
sumber
Anda tidak melihat garpu; Anda melihat fork, exec, system call untuk membaca waktu siang hari, memformat dan mengonversi output. Belum lagi apa pun yang berbagi waktu secara paralel.
Atas dasar apa yang Anda katakan mesin lain "sebenarnya adalah lebih lambat"? Ada banyak hal yang berkontribusi terhadap kecepatan aktual komputer dan persepsi pengguna tentang kecepatan komputer. Apa yang Anda lakukan di mana fork / detik adalah ukuran kinerja yang baik? Berapa kecepatan memori, arsitektur, dan jumlahnya? Disk I / O kecepatan dan buffering?
Menurut Anda, mana yang akan melakukan lebih banyak fork / detik: Core i7 yang menjalankan Vista dengan RAM 512MB atau Celeron yang menjalankan Linux minimal dengan 2 GB?
sumber