Как улучшить время компиляции Visual C ++? - PullRequest
49 голосов
/ 12 февраля 2010

Я компилирую 2 проекта C ++ в buildbot для каждого коммита. Оба файла содержат около 1000 файлов, один - 100 клоков, другой - 170 клоков. Время компиляции сильно отличается от gcc (4.4) до Visual C ++ (2008).

Компиляции Visual C ++ для одного проекта занимают 20 минут. Они не могут использовать преимущества нескольких ядер, потому что проект зависит от другого. В конце концов, полная компиляция обоих проектов в Debug и Release в 32 и 64 битах занимает более 2,5 часов.

компиляции gcc для одного проекта занимают 4 минуты. Он может быть распараллелен на 4 ядра и занимает около 1 мин 10 сек. Все 8 сборок для 4 версий (Debug / Release, 32/64 бит) двух проектов компилируются менее чем за 10 минут.

Что происходит со временем компиляции Visual C ++? Они в основном в 5 раз медленнее.

Какое среднее время, которое можно ожидать для компиляции C ++ kloc? Мои 7 с / клок с vc ++ и 1.4 с / клок с gcc.

Можно ли что-нибудь сделать для ускорения времени компиляции в Visual C ++?

Ответы [ 12 ]

0 голосов
/ 12 февраля 2010

Кажется очень странным, что была бы такая разница ... но нет никаких причин, по которым вы не можете также использовать многоядерные технологии в Visual!

В основном у вас есть 4 режима компиляции: (Отладка / Выпуск) x (32 бита / 64 бита), каждый из которых полностью независим от другого, вы можете отлично запустить 4 параллельно, полностью используя все доступные 4 ядра. Или просто попробуйте многопроцессорный подход и в Visual Studio.

Однако это не поможет. 150 минут против 10 минут - огромный разрыв. Исходя из моего личного опыта, есть 2 основных фактора сокращения времени компиляции:

  • иметь все файлы, используемые на локальном диске (при необходимости используя репликацию с удаленных), и все файлы, созданные локально (.o .so)
  • используйте все имеющиеся в вашем распоряжении ядра, и, если сможете, даже перейдите на Multi Machines (distcc и т. Д.) *
0 голосов
/ 12 февраля 2010

Вы строите на одной машине? Вы используете ту же ОС? Я видел разницу в скорости в 3-10 раз при сравнении GCC в Cygwin и GCC на компьютере VirtualBox, работающем на Windows с хостом Cygwin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...