Per compilare un pacchetto software su una workstation con molti core della CPU (diciamo 12), la fase di configurazione spesso richiede molto più tempo della fase di compilazione effettiva perché ./configureesegue i test uno per uno, mentre make -jesegue gccin parallelo altri comandi.
Sento che è un enorme spreco di risorse avere gli 11 core rimanenti inattivi la maggior parte del tempo in attesa del ./configurecompletamento del rallentamento . Perché deve eseguire i test in sequenza? Ogni test dipende l'uno dall'altro? Posso sbagliarmi, ma sembra che la maggior parte di loro sia indipendente.
Ancora più importante, ci sono modi per accelerare ./configure?
Modifica: per illustrare la situazione, ecco un esempio con 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
risultati:
# 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
Con coreutils-8.9 , ci ./configurevuole 6 volte di più di make. Sebbene ./configureusi meno tempo della CPU (guarda i tempi "utente" e "sys"), ci vuole molto più tempo ("reale") perché non è parallelizzato. Ho ripetuto il test alcune volte (con i file pertinenti probabilmente presenti nella cache di memoria) e i tempi sono entro il 10%.