Почему WD Velociraptor не ускоряет мою компиляцию VC++ значительно?

Несколько человек здесь рекомендовали перейти на новый жесткий диск WD Velociraptor 10000 об / мин. Также в журнальных статьях хвалят спектакль. Я купил один и скопировал на него свою старую систему. Результирующее увеличение скорости компиляции несколько разочаровывает:

  • На моем старом диске Samsung (SATA, 7200) время компиляции было 16:02.
  • На Velociraptor сборка занимает 15:23.

У меня есть E6600 с оперативной памятью 1.5G. Это C++ - проект с 1200 файлами. Сборка сделана в Visual Studio 2005. Акустическое управление отключено (все равно большой разницы).

Что-то пошло не так, или это скромное ускорение действительно все, чего я могу ожидать?

Редактировать: Некоторые рекомендовали увеличить оперативную память. Я сделал это сейчас и получил минимальный выигрыш (3-5%), удвоив объем оперативной памяти до 3 ГБ.

Полагаю, вы имеете в виду Q6600 для процессора?

NotMe 10.10.2008 18:00

Моя новая машина решила проблему. Получается, что чистая мощность процессора - это лекарство. I7-870 компилируется за 4:22. Большой!

Christof Schardt 22.10.2010 11:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
2
1 064
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

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

На основании результатов я бы предположил, что либо ваша скорость задержки жесткого диска не была узким местом, которое вы искали, либо ваш проект уже близок к созданию как можно быстрее. Также следует рассмотреть следующие вопросы:

  1. время доступа к hdd (хотя вы, возможно, не сможете многое с этим поделать из-за ограничений скорости шины)
  2. Скорость и размер доступа к ОЗУ
  3. Скорость процессора
  4. Уменьшение фоновых процессов

~ 6% увеличение скорости только за счет улучшения вашего жесткого диска. Как и сказал Ховлер. Возьмите ОЗУ Быстрее и PCU.

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

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

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

Если ваши файлы 1200 cpp находятся в одном проекте, вы, вероятно, не используете весь свой процессор. Если не ошибаюсь, C6600 - четырехъядерный процессор.

Дэйв

Не нужно извиняться! В любом случае E6600 является двухъядерным процессором, так что вам все равно предстоит кардинальное улучшение, если вы не строите проекты параллельно.

Dave Van den Eynde 15.10.2008 11:28

1200 Исходных файлов очень много, но ни один из них вряд ли будет больше пары сотен КБ, поэтому, хотя все они должны быть прочитаны в память, это не займет много времени.

Повышение вашей системной памяти до 4G (да, да, я знаю о 3-м или другом ограничении, которое есть в 32-битных ОС) и, возможно, просмотр вашего процессора обеспечит гораздо большее улучшение производительности, чем простое использование более быстрого диска.

На самом деле это довольно большой скачок в скорости для простой замены жесткого диска. Вероятно, на этом этапе вы ограничены памятью или процессором. 1,5 ГБ в наши дни - это мало, а оперативная память стоит очень дешево. Вы можете увидеть некоторые довольно большие улучшения с большим объемом памяти.

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

Что касается этого комментария:

If your 1200 cpp files are in a single project, you're probably not using all of your CPU. If I'm not mistaken a C6600 is a quad-core CPU.

Собственно, C6600 - это не что иное, как. Есть E6600 и Q6600. E6600 - двухъядерный, а Q6600 - четырехъядерный. На своей машине разработчика я использую четырехъядерный процессор, и хотя в нашем проекте более 1200 файлов, он по-прежнему ЛЕГКО ограничен процессором во время компиляции (хотя более быстрый жесткий диск все равно поможет ускорить процесс!).

Ответ принят как подходящий

Используете ли вы параметр / MP (недокументированный, вы должны ввести его вручную в параметры процессора), чтобы включить параллельную сборку на уровне исходного кода? Это ускорит вашу компиляцию гораздо больше, чем просто более быстрый жесткий диск. Выгоды от этого незначительны.

Это официально поддерживается в VC++ 2008.

Aardvark 10.10.2008 18:15

Большой!!! После добавления / MP к параметрам компиляции он был собран в 9:48 (а не 15:23).

Christof Schardt 10.10.2008 18:37

Большой! Я не знал, что он уже включен в компилятор VC++ 2005, это определенно помогло мне выжать немного больше скорости из моей сборки.

Dave Van den Eynde 15.10.2008 11:31

VC 2005 не компилирует более одного файла за раз для каждого проекта, поэтому либо перейдите на VC 2008, чтобы использовать оба ядра вашего процессора, либо разбейте свое решение на несколько подпроектов библиотек, чтобы запустить несколько компиляций.

Я вдвое сократил время компиляции, поместив весь исходный код на RAM-накопитель.

Я попробовал этих ребят http://www.superspeed.com/desktop/ramdisk.php, установил RAMDrive на 1 ГБ, а затем скопировал на него все мои исходники. Если вы строите напрямую из ОЗУ, накладные расходы ввода-вывода значительно сокращаются.

Чтобы дать вам представление о том, что я компилирую и из чего;

  • WinXP 64-разрядная
  • Оперативная память 4 ГБ
  • 2.? Двухъядерные процессоры с тактовой частотой ГГц
  • 62 C# проекта
  • около 250клок.

Моя сборка увеличилась с 135 до 65.

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

Кроме того, вы должны заплатить за программное обеспечение. Но раз уж вы тратите деньги на жесткие диски, возможно, это не так уж и важно.

Плюсы - увеличенное время компиляции и тот факт, что exes уже живут в памяти, поэтому время запуска и время отладки немного лучше. Однако реальным преимуществом является время компиляции.

Вы имеете в виду, что вы вдвое сократили время компиляции. знак равно

Seiti 07.07.2009 10:14

Другие вопросы по теме