Низкая производительность инкрементной компоновки в Visual Studio C ++ - PullRequest
9 голосов
/ 02 сентября 2011

У меня есть большой двоичный файл, который состоит из множества статических библиотек и отдельных файлов cpp.Он настроен на использование инкрементной компоновки, все оптимизации отключены /Od - это отладочная сборка.

Я заметил, что если я изменяю какой-либо автономный файл cpp, то инкрементное связывание выполняется быстро - 1 мин.Но если я изменю любой cpp в любой статической библиотеке, он будет работать долго - 10 минут, в то же время, что и обычные ссылки.В этом случае я не получаю никакой выгоды от дополнительных ссылок.Возможно ли это ускорить?Я использую VS2005.

Ответы [ 3 ]

9 голосов
/ 15 сентября 2011

Установить «Использовать входы зависимостей библиотеки» на странице свойств компоновщика для вашего проекта.Это свяжет отдельные файлы .obj из зависимости .lib вместо .lib, что может иметь некоторые побочные эффекты.

2 голосов
/ 15 сентября 2011

Я собираюсь дать вам другой тип ответа.Аппаратное обеспечение.

Какая у вас среда разработки?Есть ли способ получить больше оперативной памяти или поместить свой проект на твердотельный накопитель?Я обнаружил, что использование SSD ускорило время моей ссылки на мои рабочие проекты на порядок.Немного помог при компиляции, но ссылки были огромными.Конечно, также помогло получить более быструю систему.

0 голосов
/ 15 сентября 2011

Если я правильно понимаю (после использования Visual Stuio в течение нескольких лет), функция инкрементного связывания не работает для объектных файлов, которые являются частью статических библиотек.

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

...