Должен ли аргумент -j make быть точно таким же, как количество ядер?

#gcc #makefile

#gcc #makefile

Вопрос:

  make -j$(nproc)
 

При компиляции gcc из исходного кода я увидел, что есть шаг использования -j для сопоставления доступных ядер. Должен ли аргумент совпадать с номерами ядер? Наносит ли это какой-либо вред, если оно меньше фактического числа ядер? Например, если у меня 8 ядер, но я использую:

 make -j 4
 

Какие-либо последствия?

Комментарии:

1. -j задает количество процессов, которые будут использоваться для компиляции вашего кода. Если вы используете меньше, он компилируется медленнее.

2. Я понимаю. Таким образом, это не означает, что скомпилированный gcc может использовать только количество ядер, настроенных здесь. Верно? Медленная компиляция — это нормально.

3. So it doesn't mean the compiled gcc can only use the number of cores configured here. Нет. Это вообще не влияет на результат.

4. Это очень приятно.

5. Если быть точным, gcc вообще не использует несколько ядер. Это make то, что порождает так много экземпляров компилятора для одновременной компиляции нескольких файлов. Вы можете использовать любое значение, которое хотите (или даже никакого значения, чтобы создавать как можно больше задач), но разумным значением будет количество ядер, чтобы вы использовали всю мощность процессора без перегрузки системы.