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