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

#visual-c #hardware #performance #compilation

Вопрос:

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

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

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

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

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

Комментарии:

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

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

Ответ №1:

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

Комментарии:

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

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

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

Ответ №2:

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

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

Дейв

Комментарии:

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

Ответ №3:

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

Ответ №4:

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

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

Ответ №5:

~6% увеличение скорости только за счет улучшения вашего жесткого диска. Как и сказал Хоулер. Возьмите немного оперативной памяти побыстрее и ПК.

Ответ №6:

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

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

Ответ №7:

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

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

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

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

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

Ответ №8:

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

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

Ответ №9:

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

Ответ №10:

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

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

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

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

Мое телосложение выросло примерно с 135 до 65 лет.

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

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

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

Комментарии:

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