Несколько человек здесь рекомендовали перейти на новый жесткий диск WD Velociraptor 10000 об / мин. Также в журнальных статьях хвалят спектакль. Я купил один и скопировал на него свою старую систему. Результирующее увеличение скорости компиляции несколько разочаровывает:
У меня есть E6600 с оперативной памятью 1.5G. Это C++ - проект с 1200 файлами. Сборка сделана в Visual Studio 2005. Акустическое управление отключено (все равно большой разницы).
Что-то пошло не так, или это скромное ускорение действительно все, чего я могу ожидать?
Редактировать: Некоторые рекомендовали увеличить оперативную память. Я сделал это сейчас и получил минимальный выигрыш (3-5%), удвоив объем оперативной памяти до 3 ГБ.
Моя новая машина решила проблему. Получается, что чистая мощность процессора - это лекарство. I7-870 компилируется за 4:22. Большой!





Я полагаю, что чтение с жесткого диска не было вашим узким местом при компиляции. На самом деле, несколько вещей нужно читать / записывать с / на жесткий диск. Вы, вероятно, увидите больший прирост производительности от большего количества оперативной памяти или более быстрого процессора.
На основании результатов я бы предположил, что либо ваша скорость задержки жесткого диска не была узким местом, которое вы искали, либо ваш проект уже близок к созданию как можно быстрее. Также следует рассмотреть следующие вопросы:
~ 6% увеличение скорости только за счет улучшения вашего жесткого диска. Как и сказал Ховлер. Возьмите ОЗУ Быстрее и PCU.
Как многие уже отметили, вы, вероятно, не атаковали реальное узкое место. Случайно меняющиеся партии (или код в этом отношении) - это, как можно сказать, «бас в сторону». Сначала вы определяете узкое место в производительности, а затем что-то меняете.
Perfmon может помочь вам получить хороший обзор, если вы привязаны к процессору или вводу-выводу, вы хотите посмотреть на использование процессора, длину дисковой очереди и байты ввода-вывода, чтобы получить первое представление о том, что происходит.
Visual Studio 2005 может создавать несколько проектов параллельно и будет делать это по умолчанию на многоядерном компьютере, но в зависимости от того, как ваши проекты зависят друг от друга, их параллельное построение может быть невозможно.
Если ваши файлы 1200 cpp находятся в одном проекте, вы, вероятно, не используете весь свой процессор. Если не ошибаюсь, C6600 - четырехъядерный процессор.
Дэйв
Не нужно извиняться! В любом случае E6600 является двухъядерным процессором, так что вам все равно предстоит кардинальное улучшение, если вы не строите проекты параллельно.
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.
Большой!!! После добавления / MP к параметрам компиляции он был собран в 9:48 (а не 15:23).
Большой! Я не знал, что он уже включен в компилятор VC++ 2005, это определенно помогло мне выжать немного больше скорости из моей сборки.
VC 2005 не компилирует более одного файла за раз для каждого проекта, поэтому либо перейдите на VC 2008, чтобы использовать оба ядра вашего процессора, либо разбейте свое решение на несколько подпроектов библиотек, чтобы запустить несколько компиляций.
Я вдвое сократил время компиляции, поместив весь исходный код на RAM-накопитель.
Я попробовал этих ребят http://www.superspeed.com/desktop/ramdisk.php, установил RAMDrive на 1 ГБ, а затем скопировал на него все мои исходники. Если вы строите напрямую из ОЗУ, накладные расходы ввода-вывода значительно сокращаются.
Чтобы дать вам представление о том, что я компилирую и из чего;
Моя сборка увеличилась с 135 до 65.
Недостатком является то, что ваши исходные файлы находятся в оперативной памяти, поэтому вам нужно быть более бдительными в отношении контроля версий. Если ваша машина потеряет питание, вы потеряете все неверсированные изменения. Слегка смягчается тем фактом, что некоторые RAMdrive сохраняют себя на диск при выключении машины, но, тем не менее, вы потеряете все либо после последней проверки, либо после последнего выключения.
Кроме того, вы должны заплатить за программное обеспечение. Но раз уж вы тратите деньги на жесткие диски, возможно, это не так уж и важно.
Плюсы - увеличенное время компиляции и тот факт, что exes уже живут в памяти, поэтому время запуска и время отладки немного лучше. Однако реальным преимуществом является время компиляции.
Вы имеете в виду, что вы вдвое сократили время компиляции. знак равно
Полагаю, вы имеете в виду Q6600 для процессора?