Как сократить время компоновки для большого проекта, написанного на нативном Visual C ++? - PullRequest
2 голосов
/ 30 ноября 2008

Я работаю с большим количеством источников, написанных на Visual C ++. Цель - библиотека dll. Время связывания занимает несколько минут. Как можно сократить это время?

Библиотека зависит от других библиотек и библиотек, которые находятся в том же решении.

Первое, что можно сделать, это разделить источник на несколько проектов, но это трудоемкий подход и очень дорогой.

Возможно, существуют некоторые другие подходы, которые можно использовать в моей ситуации.

РЕДАКТИРОВАТЬ: Я использую добавочную связь, хотя это резко сокращает время, но этого мне недостаточно. Нет проблем с размером объектного файла, потому что самым раздражающим является разработка такой кодовой базы. Каждая маленькая модификация требует ожидания меня для связи.

Ответы [ 3 ]

3 голосов
/ 01 декабря 2008

Рефакторинг !!! Разделите большую DLL на более мелкие модули, сделайте это, используя слои интерфейсов, создайте архитектуру, когда вы разбиваете «огромную» DLL на более мелкие, в отличие от первых 5 файлов и т. Д. Тщательно сопоставьте иерархию DLL. 1 DLL может зависеть от 1 или более уровня 0 и т. Д.

Усилия по выполнению этой задачи окупятся, представьте, что всего 10 разработчиков ждут всего 6 минут в день, 10 * 6 == 1 час * 5 дней в неделю, это означает, что вы теряете более половины времени разработки в неделю этого должно быть более чем достаточно, чтобы оправдать отказ от разработки функций, чтобы привести в порядок ваших уток.

Также вы упомянули библиотеки, если у вас есть источник, который делает эти DLL тоже, это очень быстро окупится, когда вы включите редактирование и продолжение.

1 голос
/ 01 декабря 2008

Вы можете попытаться уменьшить количество включаемых зависимостей. Некоторые заголовки инициируют добавление большого количества кода в файлы .obj, даже если в них ничего не используется. Некоторые примеры таких заголовков и

1 голос
/ 30 ноября 2008

Если вы не используете инкрементные ссылки, вы должны изучить это. В основном он сравнивает окончательный размер объекта с производительностью компоновки.

Параметры глобальной оптимизации также перемещают время компиляции (т.е. генерацию кода) из фазы компиляции в фазу соединения - вам может быть лучше их потерять, так что компиляция отдельных файлов происходит медленнее, а связь быстрее.

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