Lorsque je (re) construis de gros systèmes sur un ordinateur de bureau / portable, je dis make
d'utiliser plus d'un thread pour accélérer la vitesse de compilation, comme ceci:
$ make -j$[ $K * $C ]
Où $C
est censé indiquer le nombre de cœurs (que nous pouvons supposer être un nombre à un chiffre) que possède la machine, alors $K
que je varie de 2
à 4
, selon mon humeur.
Ainsi, par exemple, je pourrais dire make -j12
si j'ai 4 cœurs, indiquant make
d'utiliser jusqu'à 12 threads.
Ma justification est que si j'utilise uniquement des $C
threads, les cœurs seront inactifs pendant que les processus sont occupés à récupérer les données des lecteurs. Mais si je ne limite pas le nombre de threads (c'est-à-dire make -j
), je risque de perdre du temps à changer de contexte, à court de mémoire, ou pire . Supposons que la machine ait des $M
Go de mémoire (où $M
est de l'ordre de 10).
Je me demandais donc s'il existe une stratégie établie pour choisir le nombre de threads le plus efficace à exécuter.