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

StackOverflow https://stackoverflow.com/questions/3101487

Вопрос

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

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

РЕДАКТИРОВАТЬ:Дополнительная информация:
Отлаживать:
- Оптимизация всей программы: нет
- Включить уровень функционального уровня: нет

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

Это было полезно?

Решение

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

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

PS:Оригинальная ссылка (не работает в 09.11.2015)

Другие советы

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

Лично я никогда не видел, как выпуск PDB не будет больше, чем отладка PDB. Та же дело для Libs.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top