Режим выпуска статическая библиотека, намного более крупная, чем версия режима отладки

сегодня я узнал, что скомпилированная статическая библиотека, я продолжаю работать, является намного более крупной в режиме Release, чем в Отладке. Я нашел это очень удивительным, с большей части времени полная противоположность происходит (насколько я могу сказать).

Размер в режиме отладки составляет немного более чем 3 МБ (довольно крупный проект), но в выпуске он подходит к 6,5 МБ. Кто-то может сказать мне, какова могла быть причина этого? Я использую обычные настройки Visual Studio (2008) для статического проекта библиотеки, почти ничего не изменил в настройках конфигурации сборки. В выпуске я использую/O2 и "Размер пользы, или скорость" не установлена ни на "Одного". Мог/O2 ("Максимизируют скорость"), заставляют финал .lib быть настолько более крупным, чем отладочная версия со всей информацией об отладке в нем?

Править: Дополнительная информация:
Отладка:
- целая оптимизация программы: Нет
- включите связывание на уровне функций: Нет

Выпуск:
- целая оптимизация программы: Включите разовую ссылкой генерацию кода
- включите связывание на уровне функций: Да

19
задан PeterK 23 June 2010 в 12:27
поделиться

3 ответа

Разница, в частности, связана с генерацией кода во время компоновки. Прочтите главу «Генерация кода во время компоновки» в Компиляторы - что каждый программист должен знать об оптимизации компилятора на MSDN - в основном говорится, что с включенным LTCG компилятор производит гораздо больше данных, которые упаковываются в статическую библиотеку, поэтому что компоновщик может использовать эти дополнительные данные для генерации лучшего машинного кода при фактическом связывании исполняемого файла.

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

PS: Исходная ссылка (не работает на 09.11.2015)

30
ответ дан 30 November 2019 в 04:03
поделиться

Лично я никогда не видел, чтобы релизная PDB была больше отладочной PDB. То же самое касается LIBов.

0
ответ дан 30 November 2019 в 04:03
поделиться

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

1
ответ дан 30 November 2019 в 04:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: