Время сборки релиза так долго в VS2008 - PullRequest
1 голос
/ 10 июля 2009

Когда я собираю проект, время сборки получает так много времени, если это релиз.

в выпуске, время связывания: 130secs

в отладке, время компоновки: 15 сек для того же проекта.

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

Вы знаете, почему это может быть?

Ответы [ 3 ]

3 голосов
/ 10 июля 2009

Выпуск сборки возможно медленнее из-за настроек оптимизации. Обычно для отладочной сборки у вас не установлен оптимизация - это означает, что сгенерированные объектные файлы, вероятно, более или менее копируются прямо в вывод. С другой стороны, для релизных сборок у вас может быть включен LTCG , или могут применяться другие оптимизации компоновщика. Связывание обычно связано с процессором и обычно выполняется только в одном потоке, поэтому оно обычно медленное. Чем больше результат, тем хуже это, кажется, тоже.

0 голосов
/ 10 июля 2009

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

Можете ли вы дать нам больше информации о вашем решении? Например

  • Какой язык?
  • Какой тип проекта?
  • Количество файлов в проекте?
  • Воспроизводится ли из командной строки?
0 голосов
/ 10 июля 2009

По моему опыту, при связывании большую часть времени тратится на создание отладочной информации. Если вы попытаетесь связать без отладочной информации, время связывания должно сократиться (проект, над которым я работаю, идет от 80 секунд до 10). Если нет, то это что-то еще. В сборках отладки длительное время ссылки также может быть вызвано неправильным добавочным соединением; Я видел, как время соединения увеличилось с 1 минуты до 5 минут. Если вы хотите уменьшить время соединения, сохраняя при этом отладочную информацию, убедитесь, что у вас есть как можно меньше модулей компиляции, поскольку необходимо объединить информацию отладки всех модулей компиляции. Я делаю это путем объединения нескольких файлов cpp в один модуль компиляции, когда один файл cpp включает эти файлы cpp.

С уважением,

Sebastiaan

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