Какие компоненты ПК оказывают наибольшее влияние на время компиляции для Visual Studio?

9509
Rob Allen

Какие спецификации ПК оказывают наибольшее влияние на время компиляции? Диск? Тактовая частота? Количество ядер процессора?

16
Разве это не вопрос программирования? Будет ли это иметь большую аудиторию на StackOverflow? Kurt W. Leucht 14 лет назад 1

7 ответов на вопрос

13
Bevan

Фактор, который я обнаружил, имеет самое большое значение не физический, а программный: какой антивирус вы установили?

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

(Подробнее см. Https://stackoverflow.com/questions/1170078/is-it-usual-for-aspx-files-to-take-5-10-seconds-to-save/1170129#1170129 .)

С другой стороны, если вы хотите улучшить производительность существующей машины, ничто не сравнится с максимальным использованием доступной памяти для быстрого выигрыша.

ПК в офисе использует TrendMicro OfficeScan. Мой домашний ноутбук использует AVG 8. Rob Allen 14 лет назад 0
«Тренд Микро». О, Боже. Если ты не можешь изменить это на что-то другое, поцелуй на прощание с любым представлением вообще. Bevan 14 лет назад 3
9
lyngbym

Скотт Гу также написал о том, что влияет на скорость сборки, указав в основном на ресурсы ввода-вывода, такие как жесткий диск.

http://weblogs.asp.net/scottgu/archive/2007/11/01/tip-trick-hard-drive-speed-and-visual-studio-performance.aspx

8
JP Alioto

Вот небольшое исследование Скотта Хансельмана об использовании нескольких процессоров для MSBUild. Ускорения довольно драматичны.

Изменить: Однако я должен отметить, что для того, чтобы иметь хороший опыт использования Visual Studio, вам нужно много оперативной памяти. :)

+1 Хорошая статья по теме. Я забыл об этом. Я думаю, что он также сделал подкаст по этому поводу. BinaryMisfit 14 лет назад 0
4
mmyers

Мой личный опыт работы с просторной базой кода C ++:

Старая машина

Процессор: Pentium 4 HT 3,06 ГГц
Память: 1 ГБ оперативной памяти DDR (ПК 2100, 333 МГц)
Диск: жесткий диск 7200 об / мин (UDMA 100, если память служит)
Время компиляции: 50 минут

Новая машина:

Процессор: Core i7 720QM (8 логических процессоров) с частотой 1,6 ГГц, турбонаддув до 1,73 ГГц, когда все ядра активны
Память: 8 ГБ DDR3 ОЗУ на частоте 1066 МГц
Диск: 7200 об / мин жесткий диск (SATA 2)
Время компиляции: 4 минуты/ МП )


Вывод: чем больше процессоров, тем лучше - даже на относительно низких тактовых частотах. SSD улучшит время еще больше, но из-за наблюдения за сообщениями компиляции, я сомневаюсь, что это улучшит его более чем на 30 секунд или около того.

3
BinaryMisfit

Насколько я помню в основном процессор и память. Быстрый Google обнаружил различные настройки, которые могут улучшить время компиляции.

Джоэл недавно написал о влиянии твердотельных дисков на компиляции здесь . Скорость диска, как правило, не улучшает время компиляции. Однако в соответствии с этим он действительно имеет эффект, на который указывает lyngbym .

1
bk1e

Xoreax IncrediBuild - это распределенная система сборки, которая значительно улучшила время компиляции, где я работаю. (К сожалению, время ссылки все еще довольно велико, особенно в сборках релизов, использующих оптимизацию всей программы и генерацию кода во время соединения, но этого и следовало ожидать.)

альтернативный текст

1
Sam Harwell

Для сборки программ на C ++ фактор # 1, прежде всего, является структурным - если исходный код сильно структурирован по вертикали, это окажет разрушительное влияние на время сборки, особенно при добавочной сборке. Я локально реструктурировал несколько частей проекта для существенного улучшения четырехъядерного Xeon. 18 месяцев спустя, и они (люди, которые владеют проектом) все еще не могут сравниться с моим временем сборки настенных часов даже на машинах с Core i7.

Эффект (положительный или отрицательный) макета вашего программного обеспечения умножается на каждого члена вашей команды и каждую сборку, которую они выполняют.

У вас есть ссылка, которая описывает различные структуры кода, пожалуйста. Я думаю, я знаю, что вы имеете в виду, но я не уверен. Rob Allen 14 лет назад 0
У меня возникают проблемы с поиском ссылок, но общая идея состоит в том, чтобы: 1) использовать предварительные объявления, где это возможно, 2) включать файлы только тогда, когда предварительное объявление не работает, и 3) убедиться, что включаемый файл не объявляет больше все, что необходимо, что, в свою очередь, может привести к тому, что в него будет включено больше файлов, которые вам не нужны для конкретного скомпилированного исходного файла (иначе говоря, сохраняйте ваши заголовки небольшими и используйте в них предварительные объявления, как вы делаете это для исходных файлов). Sam Harwell 14 лет назад 0

Похожие вопросы