Почему моя сборка Visual C ++ 2008 x64 в 5 раз медленнее сборок x86? - PullRequest
3 голосов
/ 30 октября 2009

Я пытался улучшить время сборки для моего продукта. Мы используем непрерывную интеграцию, и на наши сборки уходит 2 часа.

Я посмотрел на тайминги NANT и увидел множество мест, которые работают медленнее, чем следовало бы, но из них выпадает сборка x64 наших проектов Visual C ++. Вот пример времени по сравнению со сборками x86 с тем же кодом:

Выпуск Win32: 8 '49 " Выпуск x64: 41 '8 "

x64 примерно в 5 раз медленнее. Опять же, это для точно такого же кода.

Кто-нибудь еще сталкивался с подобным несоответствием времени сборки между x86 и x64? Любые предложения по сокращению разрыва?

ПРИМЕЧАНИЕ. Мне известны инструменты для повышения общей производительности сборки, такие как распределенные сборки Xoreax и параллельные сборки TeamCity, и я собираюсь изучить оба из них, но я не могу не чувствовать, что некоторые из них должны быть способ вернуть сборки x64 в линию, не прибегая к сторонним инструментам.

Ответы [ 2 ]

2 голосов
/ 31 октября 2009

Проверьте, одинаковы ли настройки сборки проекта для обоих. Когда вы выбираете x64, VS в основном загружает новые настройки проекта, и они могут очень сильно отличаться. Например, проверьте, включено ли добавочное построение в x64.

0 голосов
/ 31 октября 2009

Не знаю, но я не удивлюсь, если весь генератор кода будет переписан для x64. Если вы выполните тестовую сборку и используете проводник процессов для просмотра библиотек DLL, которые использует компилятор, вы сможете увидеть, использует ли компилятор совершенно разные двоичные файлы при сборке для двух разных целей. Вы можете обнаружить, что серверная часть x64 является управляемым приложением .NET, а серверная версия x86 - старомодная. Просто предположение. Вероятно, не правда. Вы могли бы исследовать использование этих двух процессоров / дисков / оперативной памяти, пока у вас запущен проводник процессов.

...