Wenn ich große Systeme auf einem Desktop- / Laptop-Computer (neu) baue, empfehle ich, makemehr als einen Thread zu verwenden, um die Kompilierungsgeschwindigkeit wie folgt zu beschleunigen:
$ make -j$[ $K * $C ]
Wo $Csoll die Anzahl der Kerne angegeben werden (von denen wir annehmen können, dass es sich um eine Zahl mit einer Ziffer handelt), über die die Maschine verfügt, während $Kich je 2nach 4Stimmung von bis variieren kann .
So könnte ich zum Beispiel sagen, make -j12wenn ich 4 Kerne habe, was bedeutet make, dass bis zu 12 Threads verwendet werden sollen.
Mein Grundprinzip ist, dass, wenn ich nur $CThreads verwende, Kerne inaktiv sind, während Prozesse damit beschäftigt sind, Daten von den Laufwerken abzurufen. Wenn ich jedoch die Anzahl der Threads nicht beschränke (dh make -j), besteht die Gefahr, dass ich Zeit damit verschwende, Kontexte zu wechseln, nicht genügend Speicherplatz zur Verfügung zu haben oder noch schlimmer . Nehmen wir an, die Maschine hat $MSpeicherplätze (wobei $Min der Größenordnung von 10 liegt).
Ich habe mich gefragt, ob es eine etablierte Strategie gibt, um die effizienteste Anzahl von Threads auszuwählen, die ausgeführt werden sollen.
