Çok sayıda CPU çekirdeğine sahip bir iş istasyonunda bir yazılım paketini derlemek için (örneğin 12), yapılandırma aşaması genellikle gerçek derleme aşamasından çok daha uzun sürer, çünkü ./configure
testler tek tek make -j
çalışır gcc
ve paralel olarak diğer komutları çalıştırır .
Kalan 11 çekirdeğin yavaşça bitmesini bekleyen boşta oturması çok büyük bir kaynak israfıdır ./configure
. Testleri neden sırayla yapmak gerekiyor? Her test birbirine bağlı mı? Yanılıyor olabilirim, ancak çoğu bağımsız görünüyor.
Daha da önemlisi, hızlandırmanın bir yolu var ./configure
mı?
Düzenleme: Durumu göstermek için, burada GNU Coreutils ile bir örnek
cd /dev/shm
rm -rf coreutils-8.9
tar -xzf coreutils-8.9.tar.gz
cd coreutils-8.9
time ./configure
time make -j24
Sonuçlar:
# 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
İle coreutils-8.9 , ./configure
6 kat daha uzun sürer make
. Daha ./configure
az CPU zamanı kullanmasına rağmen ("user" ve "sys" zamanlarına bakın), paralel olmadığı için daha uzun sürer ("gerçek"). Testi birkaç kez tekrarladım (muhtemelen ilgili dosyalar bellek önbelleğinde kalıyor) ve süreler% 10 içinde.