См. Мое предложение, сделанное в Microsoft: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=511300
Вы должны проголосовать за это! Вот мой последний комментарий:
Да, мы используем инкрементные ссылки для создания большинства наших проектов. Для самых больших проектов это бесполезно. На самом деле, требуется больше времени, чтобы связать эти проекты с инкрементным связыванием (2 минуты 50 по сравнению с 2 минутами 44). Мы заметили, что это не работает, когда размер ILK-файлов велик (наш самый большой проект генерирует аналог 262144 КБ в win 32).
Ниже, я перечисляю другие вещи, которые мы пытались сократить время ссылки:
- Явная реализация шаблона для уменьшения раздувания кода. Небольшой выигрыш.
- IncrediLink (IncrediBuild дает интересный выигрыш для компиляции, но почти не дает усиления для ссылки).
- Удалите отладочную информацию для библиотек, которые редко отлаживаются (хороший выигрыш).
- Удалить файл PDB в «Pre-Build Event» (как ни странно, он дает интересный выигрыш, например: 2min44 вместо 3min34).
- Преобразование многих статических библиотек в DLL. Важный выигрыш.
- Работа с компьютером, оснащенным большим количеством оперативной памяти, для максимального увеличения дискового кэша. Самый большой выигрыш.
- Большой объект против малого объекта. Без разницы.
- Изменить параметры проекта (/ Ob1, / INCREMENTAL, включить свертывание COMDAT, встраивать манифест и т. Д.). Одни дают интересную выгоду, другие нет. Мы стараемся постоянно максимально использовать наши настройки.
- Развернуть Внутренняя связь против Внешней связи. Это хорошая практика программирования.
- Отделяйте программный компонент столько, сколько мы можем себе позволить. Вы можете работать в модульном тесте, что ссылка быстро. Но нам все еще нужно объединить вещи, у нас есть устаревший код, и мы работали со сторонним компонентом.
- Использовать секретный переключатель компоновщика / ожидаемый размер выхода: 120000000. Небольшой выигрыш.
Обратите внимание, что во всех наших экспериментах мы тщательно измеряли время соединения. Время медленной связи серьезно сказывается на производительности. Когда вы реализуете сложный алгоритм или отслеживаете сложную ошибку, вы хотите быстро повторить эту последовательность: изменить некоторый код, ссылку, отладку трассировки, изменить некоторый код, ссылку и т. Д.
Еще одним моментом оптимизации времени соединения является его влияние на наш непрерывный цикл интеграции. У нас есть много приложений, которые используют общий код, и мы постоянно его интегрируем. Время соединения всех наших приложений заняло половину времени цикла (15 минут) ...
В теме https://blogs.msdn.microsoft.com/vcblog/2009/09/10/linker-throughput/, были сделаны некоторые интересные предложения по улучшению времени ссылки. Почему на 64-битном компьютере нет возможности полностью работать с файлом в оперативной памяти?
Опять же, любые предложения, которые могут помочь нам сократить время ссылки, приветствуются.