Untuk mengkompilasi paket perangkat lunak pada workstation dengan banyak core CPU (katakanlah 12), tahap konfigurasi seringkali memakan waktu lebih lama daripada tahap kompilasi yang sebenarnya karena ./configure
melakukan pengujian satu per satu, saat make -j
dijalankan gcc
serta perintah lain secara paralel.
Saya merasa bahwa itu adalah pemborosan sumber daya yang besar untuk membiarkan 11 core yang tersisa duduk diam sebagian besar waktu menunggu yang lambat ./configure
untuk diselesaikan. Mengapa perlu melakukan tes secara berurutan? Apakah setiap tes tergantung satu sama lain? Saya bisa saja salah, tetapi sepertinya mayoritas dari mereka independen.
Lebih penting lagi, apakah ada cara untuk mempercepat ./configure
?
Sunting: Untuk mengilustrasikan situasinya, berikut adalah contoh dengan GNU Coreutils
cd /dev/shm
rm -rf coreutils-8.9
tar -xzf coreutils-8.9.tar.gz
cd coreutils-8.9
time ./configure
time make -j24
Hasil:
# For `time ./configure`
real 4m39.662s
user 0m26.670s
sys 4m30.495s
# For `time make -j24`
real 0m42.085s
user 2m35.113s
sys 6m15.050s
Dengan coreutils-8.9 , ./configure
membutuhkan waktu 6 kali lebih lama dari make
. Meskipun ./configure
menggunakan lebih sedikit waktu CPU (lihat waktu "pengguna" & "sys"), ini membutuhkan waktu lebih lama ("nyata") karena tidak diparalelkan. Saya telah mengulangi pengujian beberapa kali (dengan file yang relevan mungkin tinggal di cache memori) dan waktunya berada dalam 10%.