2017-05-31 1 views
0

J'ai remarqué sur mon MacBook Pro (Quad-core) que lorsque je lance make, il faut autant de temps que make -j, et bien sûr, Activity Monitor montre que les quatre cœurs sont très utilisés. Pourquoi est-ce? Y a-t-il un réglage par défaut qu'Apple a? Je veux dire, il serait logique que -j soit la valeur par défaut, mais d'après ce que j'ai vu sur le web, faites sans argument ne devrait utiliser qu'un thread.Make utilise plusieurs cœurs même sans argument -j?

Ce n'est pas nécessairement un problème, mais j'aimerais en comprendre la cause.

+0

Nous pouvons avoir besoin d'un exemple de travail réel montrant ce comportement. Il peut y avoir une supercherie * dans le makefile (il pourrait appeler un autre makefile avec l'option -j), ou même quelque chose à faire avec le compilateur. – Evert

+0

Voici le fichier makefile: https://gist.github.com/michaelsavich/8711e75fc6c770cb550100d94c249c12 – PopKernel

+1

Vous avez généralement une config de fichier make par défaut qui spécifie la valeur par défaut '-j $ NUM_CORES'. Je n'ai aucune idée où il est sur un Mac. Généralement, vous ne définissez pas une valeur par défaut supérieure à '1' car la plupart du code (même un code assez récent) ne se construit pas en parallèle à moins que le code ne soit spécifiquement écrit pour tirer parti de la compilation en parallèle. Vous pourriez bien utiliser un noyau pour la compilation, mais il y aura beaucoup de travail dans vos autres cœurs. –

Répondre

0

L'indicateur -j|--jobs spécifie/limite le nombre de commandes pouvant être exécutées simultanément, et non le nombre de threads à allouer à une seule commande. Pensez à cette option comme concurrence au lieu du parallélisme. Par exemple, je peux spécifier --jobs=2 et avoir à la fois un transtockeur ES6 et un préprocesseur SASS fonctionnant en arrière-plan, dans la même fenêtre de terminal, en surveillant les changements de fichiers que je peux effectuer.