Как выяснить, какие методы увеличивают размер exe - PullRequest
7 голосов
/ 03 июля 2011

Я пытаюсь написать свое первое «демосценное» приложение в MS Visual Studio Express 2010. Внезапно я понял, что мой двоичный файл расширился с 16 КБ до ~ 100 КБ в полностью оптимизированной для релиза версии. Мой целевой размер 64 КБ. Есть ли способ как-то "просмотреть" двоичный файл, чтобы выяснить, какие методы занимают много места, а какие я должен переписать? Я действительно хочу знать, из чего состоит мой бинарный файл.

Из того, что я нашел в сети, VS2010 не лучший компилятор для демосцен, но я все еще хочу понять, что происходит внутри моего .exe-файла.

Ответы [ 4 ]

5 голосов
/ 03 июля 2011

Я думаю, вам нужно, чтобы MSVC сгенерировал для вас файл карты. Это файл, который сообщит вам адреса большинства различных функций вашего исполняемого файла. Разница между последовательными адресами должна указывать, сколько места занимает функция. Чтобы создать файл карты, добавьте параметр компоновщика /MAP. Для получения дополнительной информации см .: http://msdn.microsoft.com/en-us/library/k7xkk3e2(v=VS.100).aspx

2 голосов
/ 03 июля 2011

Я нашел это полезным для проверки исполняемых размеров (но не для вещей типа демосцены): http://aras -p.info / projSizer.html

Я скажу так: если вы вообще используете стандартную библиотеку, немедленно остановитесь. Это огромный раздуватель кода. Например, каждое уникальное использование std::sort добавляет около 5 КБ, и для многих стандартных контейнеров существуют похожие цифры (конечно, это зависит от того, какие функции вы используете, но в целом они добавляют много кода).

Кроме того, я не в демо-сцене, но я считаю, что люди используют Crinkler для сжатия своих исполняемых файлов.

2 голосов
/ 03 июля 2011

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

0 голосов
/ 03 июля 2011

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

...