Що важливіше процесора або оперативної пам’яті для компіляції великого програмного забезпечення, наприклад завантажувальної програми gcc?


11

Шукаю незабаром придбати новий комп’ютер, і я хочу, щоб машина мала найкращі показники для швидкого часу компіляції.

Тож я повинен дбати про отримання чотирьохядерного процесора з найвищим ГГц, який я можу собі дозволити, чи варто замість цього інвестувати у швидкість оперативної пам’яті?

Яка ваша рекомендація щодо того, до якого типу оперативної пам’яті слід користуватися?

Продуктивність графіки не має значення, компілюючи навантаження програмного забезпечення та виконуючи математичні симуляції.

Відповіді:


8

Я б не сказав жодного. Швидше отримайте швидкий жорсткий диск SSD . Звичайно, вам також потрібен належний процесор і кількість оперативної пам’яті, але так ...


2
Ну, я не отримав SSD, замість цього я отримав 32 ГБ оперативної пам’яті і компілюю все в оперативній пам’яті на tmpfs .... навіть швидше, ніж SSD =)
Діма,

1
Ну, це така ж ідея: p
Svish

2
Я не погоджуюсь. Я отримав накопичувач SSD для свого ноутбука, і це мало змінило швидкість компіляції. З іншого боку, отримання нового комп'ютера з майже потрійною швидкістю процесора та лише 4 ГБ проти 6 ГБ на SSD-машині зробило компіляцію майже в 3 рази швидшою. anandtech.com/show/2829/25 не знаходить помітного підвищення швидкості компілятора за допомогою SSD, тоді як blog.hypercomplex.co.uk/index.php/2010/06/… знаходить на 23% покращення. Мені здається логічним, що якщо у вас достатньо пам'яті, компіляція передбачає дуже мало використання диска.
Кріс Дракон

1
Ще одна думка: можливо, деякі компілятори використовують багато тимчасових файлів для компіляції, а не пам'ять; у цьому випадку найбільше допоможуть SSD або ramdisk. Однак я б не очікував, що сучасні компілятори будуть спроектовані таким чином, коли пам’ять дешева і велика, і система обробляє підключення до диска, коли вона закінчується. Використовуючи XCode 3.2.6 (на основі gcc 3 або 4), SSD мало користі.
Кріс Дракон

SSD суттєво відрізняється у великих проектах / рішеннях, які сильно використовують копіювання / переміщення файлів. Я особисто не використовував RAM-стиль tmpfs, але чув про це хороші речі. Для менших проектів це, мабуть, добре. Для величезних? Це може бути недостатньо.
kayleeFrye_onDeck

4

Можливо, оперативна пам'ять дасть вам більший удар за долар. Компіляція, особливо великих додатків, дуже інтенсивна вводу / виводу, а наявність більшої оперативної пам’яті означає, що ви можете заощадити більше часу на підключення до та з диска. Більшість процесорів сьогодні, особливо якщо ви користуєтесь дешевим чотирьохядерним процесором, забезпечить безліч процесорних потужностей для вашої компіляції, але наявність оперативної пам’яті допоможе при переході даних назад і назад.

По другій думці, це щось залежить від ваших математичних моделей та процесів побудови. Чи є вони паралельними? Якщо ні, додавання більшої кількості ядер насправді нічого не зробить для її прискорення, хоча нові мікросхеми Intel (Core i7) досить швидкі на основі ядра.


1
що стосується компіляції з диском?
Араш

2

Я б сказав, що отримуйте навантаження оперативної пам’яті та використовуйте рамкові диски для тимчасового зберігання. Це різко збільшить швидкість компіляції. Швидкий багатоядерний процесор теж буде добре, але я думаю, що ви отримаєте більше користі від великої кількості оперативної пам’яті. Погляньте на цю статтю для деяких ідей. Ось додаткова інформація та ще трохи тут . Я думаю, що використання оперативної пам’яті буде швидше, ніж використання SSD, але я можу помилитися.


2

Для ваших обчислень ваш процесор, безумовно, є найважливішим.

Компіляція підкреслить як ваш процесор, так і оперативну пам'ять.

Я думаю, що вашим найвигіднішим рішенням було б отримати найкращий процесор, який ви можете собі дозволити, а краще Quad core. Оскільки оперативна пам’ять є настільки ж дешевою, як і DDR3 (тепер DDR3 така дешева, як і DDR2), ви можете легко підключити стільки оперативної пам’яті, скільки вам потрібно для маленької монети (16 ГБ DDR3 за 180 доларів на newegg… Я розумію, що це надмірно, просто намагаюся продемонструвати, наскільки це дешево). Тож я би вклав стільки, скільки можу собі дозволити, на якісний процесор.


Витратити більше грошей, щоб отримати швидший процесор - це корисна порада. Але не витрачати більше грошей, щоб отримати більше ядер. GCC виконує всю компіляцію в один потік, тому ніколи не використовує більше одного ядра.
Ісаак Рабінович

1
@Isaac Так, але система збірки зазвичай може породжувати декілька завдань gcc одночасно, наприклад, makeз -jможливістю. Крім того, я вважаю, що llvm може або зможе скласти один файл, використовуючи декілька потоків.
Ponkadoodle

@Wallacoloo Гаразд, іноді ви можете отримати трохи додаткову швидкість, коли у вас є файли, паралельні в графіку залежності. Тим не менш, я вважаю, що додаткові сердечники є досить незначним фактором, коли справа стосується прискорення нарощування. Важко сказати, адже додаткові ядра - це стандартна функція в новіших процесорах, які прискорюють роботу просто швидше тактируючи годинник. Якщо ви хочете продемонструвати, що я помиляюся, спробуйте зробити велику компіляцію з та без -j.
Ісаак Рабінович

2
@IsaacRabinovitch Власне на великих базах коду це має значення багато . На нашій кодовій базі час компіляції скорочується майже лінійно з distcc( make -j8(локально) до make -j30(поширюється по мережі))
Alex

0

Добре графіка може допомогти, оскільки відеокарта з процесором на ній може зменшити навантаження на основний процесор. Потужність процесора, ймовірно, важливіша за оперативну пам’ять, але чим краще обидва, тим краще ви будете.


Хороший момент - лише в тому випадку, якщо процес міг би використовувати ядра CUDA, яких більшість не робить.
NoBugs

0

через фізичні обмеження, ядра самі не стануть набагато швидшими в будь-який час, тому, якщо ви не плануєте переходити на спеціальний кремній, інвестуючи в більш швидкі процесори, не вирішите свою проблему, якщо паралелізація насправді не зміниться, але в будь-якому випадку багато програмного забезпечення навряд чи зможуть отримати понад 4 ядра , Я це знаю, бо дуже часто складаю всю свою систему і багато разів заходжу подивитися статистику ресурсів. Більше того, навіть якщо розробники хотіли збільшити паралелізацію, іноді переслідувати, щоб зробити це хорошим способом. Інвестувати в процесор добре, або для підвищення продуктивності послуг, або якщо ви спочатку робите обчислення на основі даних; навіть якщо це пізніше вплине на поведінку виконання; якщо ваші компіляції відповідають деяким із цих шаблонів, то це може бути важче обговорити, але це окремі випадки для процесу збирання; ось чому, наприклад, на графічних обчисленнях більше ядер все ще мають певне значення. Крім того, що ви робите все можливе, щоб збільшити введення / вивід якнайбільше, це може задіяти диски, таран і материнські плати

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.