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