Низкая производительность инкрементного связывания
У меня есть большой двоичный файл, который состоит из множества статических библиотек и отдельных файлов cpp. Он настроен на использование инкрементного связывания, все оптимизации отключены /Od
- это отладочная сборка.
Я заметил, что если я изменяю какой-либо автономный файл cpp, то инкрементное связывание выполняется быстро - 1 мин. Но если я изменю любой cpp в любой статической библиотеке, он будет работать долго - 10 минут, в то же время, что и обычные ссылки. В этом случае я не получаю никакой выгоды от дополнительных ссылок. Можно ли его ускорить? Я использую VS2005.
3 ответа
Установите "Использовать входы зависимостей библиотеки" на странице свойств компоновщика для вашего проекта. Это свяжет отдельные файлы.obj из зависимости.lib вместо.lib, что может иметь некоторые побочные эффекты.
Я собираюсь дать вам другой тип ответа. Аппаратные средства.
Какая у вас среда разработки? Есть ли способ получить больше оперативной памяти или поместить свой проект на твердотельный накопитель? Я обнаружил, что использование SSD ускорило время моей ссылки на мои рабочие проекты на порядок. Немного помог при компиляции, но ссылки были огромными. Получение более быстрой системы, конечно, также помогло.
Если я правильно понимаю (после использования Visual Stuio в течение нескольких лет), функция инкрементного связывания не работает для объектных файлов, которые являются частью статических библиотек.
Одним из способов решения этой проблемы является реструктуризация вашего решения таким образом, чтобы проект приложения содержал все исходные файлы.