vi consiglio di non usare l'opzione -l
.
In linea di principio, -l
sembra superiore a -j
. -j
dice, inizia molti lavori. -l
dice, assicurati che molti lavori siano in esecuzione. Spesso, quelli sono quasi la stessa cosa, ma quando si hanno lavori di I/O rilegati sono altre stranezze, quindi -l
dovrebbe essere migliore.
Detto questo, il concetto di carico medio è un po 'dubbio. È necessariamente un campione di ciò che accade sul sistema. Quindi, se si esegue make -j -l N
(per alcuni N
) e si dispone di un file di testo ben scritto, quindi eseguirà immediatamente un numero elevato di lavori e esaurirà i descrittori di file o la memoria prima che anche il primo campione del carico di sistema possa essere prelevato. Inoltre, la contabilizzazione della media del carico varia da un sistema operativo all'altro e alcuni oscuri non ne hanno affatto.
In pratica, sarete ugualmente fuori usando -j
e avrete meno mal di testa. Per ottenere più prestazioni dalla build, ottimizzare i makefile, giocare con le opzioni del compilatore e usare ccache o simili.
(temo il motivo originale per l'opzione -l
deriva da un momento in cui più processori erano rari e I/O era molto lento.)
fonte
2012-11-13 03:11:16
Sperimentalmente se Ho notato su una macchina mentre temporizzazione diverso utilizzo -j I ho ottenuto le compilazioni più veloci usando -j8 su una macchina a 4 core. – Zitrax
Ho esperienza simile. Probabilmente perché ci sono alcuni stadi di compilazione con I/O, così che quando un processo del compilatore blocca per I/O un altro può usare quel tempo per la compilazione. –