Когда я (пере) собираю большие системы на настольном компьютере / ноутбуке, я советую make
использовать более одного потока для увеличения скорости компиляции, например:
$ make -j$[ $K * $C ]
Где $C
должен указать число ядер (которые мы можем предположить , чтобы быть числом с одной цифрой) машина имеет, а $K
то , что я меняться от 2
до 4
, в зависимости от настроения.
Так, например, я мог бы сказать, make -j12
если у меня есть 4 ядра, указывая make
на использование до 12 потоков.
Мое объяснение состоит в том, что если я использую только $C
потоки, ядра будут простаивать, пока процессы заняты извлечением данных с дисков. Но если я не ограничу количество потоков (то есть make -j
), я рискую тратить время на переключение контекста, нехватку памяти или что-то еще хуже . Предположим, у машины есть $M
гигабайты памяти (где $M
порядка 10).
Поэтому мне было интересно, существует ли установленная стратегия выбора наиболее эффективного числа потоков для запуска.