С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 29.07.2016
Сообщений: 17

Оптимизация размера исполняемого файла

08.09.2016, 22:30. Показов 3908. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникла необходимо выполнить оптимизацию приложения
по размеру исполняемого файла.

Перерыл настройки билдера, но результата не добился:
В исполняемом файле много мусора и, как я понимаю,
билдер не линкует статически библиотеки.

Каким образом можно добиться снижения размера до минимума?

Естественно, upx сжимает, но нужно еще на 30% меньше...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.09.2016, 22:30
Ответы с готовыми решениями:

Создание исполняемого файла!
Доброй всей ночи! Сразу не подумайте что я не знаю как создавать exe, просто меня взяло одно сомнение. Я не знаю как лучше делать, а...

Размер исполняемого файла!
Здраствуйте! Мне надо: Показать размер исполняемого файла. Предусмотреть что имя (ехе) файла может меняться! Подскажите...

Большой размер исполняемого файла
Пишу простую программу в с++ Builder XE4. Сначала созданная программа весит 300-400Кб. Но если сделать так, что бы программа работала на...

30
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
09.09.2016, 07:38
Kopna, я тоже раньше задвался этой задачей. Единственное решение, которое я нашел, - UPX. Билдер делает просто огромные файлы по сравнению с тем, что эти файлы содержат. Причем чем выше версия билдера, тем больше исполняемый файл. Надо заметить, что проект при этом один и тот же. То есть, функционал у файлов одинаковый, а размеры разные. Такое ощущение, что более новая версия билдера запихивает в файл какой-то мусор...
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,142
Записей в блоге: 3
09.09.2016, 08:16
Есть ряд статей как уменьшить exe для BCB И Delphi..... вкратце все они сводятся к двум:
1) Вручную зачищать проект от лишних библиотек и автоматически подключаемых библиотек (которые в итоге не понадобятся)
2) Так как из подключаемых библиотек необходимо одна две функции, то советуют их вынимать и отдельно использовать в проекте

В итоге многочасовой ручной работы, exe занимает до 1МБ
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
09.09.2016, 09:14
Dinkin, я давно задавал на каком-то форуме примерно такой вопрос: если из подключаемого файла используется только одна функция, то остальные включаются в EXE файл или нет. Был ответ от эксперта, что линкер при сборке определяет какие функции требуются. Остальное не включается в файл. Даже привели пример, когда приинклудили к проекту кучу хедеров, использовав из них по одной функции, и собрали EXE. Потом собрали EXE без использования этих хедеров (и, соответственно, без использования функций из них). Размеры файлов различались всего на несколько килобайт.

А еще мне сказали не париться по поводу размера файла. Пустая форма и форма, набитая компонентами и кодом будет не очень сильно отличаться в размерах. А все равно парюсь по этому поводу...
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,142
Записей в блоге: 3
09.09.2016, 10:22
Цитата Сообщение от d7d1cd Посмотреть сообщение
Был ответ от эксперта, что линкер при сборке определяет какие функции требуются. Остальное не включается в файл
Очень странно, я бы сказал очень странный ответ...так как у меня есть проект где мне пришлось урезать функции и методы у компонентов (тупо брал исходник компонента вырезал что ненужно и его подсовывал к проекту)...в итоге 8мб exe превратился в 3мб.

Цитата Сообщение от d7d1cd Посмотреть сообщение
Пустая форма и форма, набитая компонентами и кодом будет не очень сильно отличаться в размерах
Это скорее актуально для маленьких проектов. Для больших проектов это не актуально...в ТЕМЕ, мне Volvo подсказал пару фишек для уменьшения кода....в итоге уменьшился машинный код а 10 раз, что так же мне с экономило почти 1мб проекта
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
09.09.2016, 10:32
Цитата Сообщение от Dinkin Посмотреть сообщение
...где мне пришлось урезать функции и методы у компонентов (тупо брал исходник компонента вырезал что ненужно и его подсовывал к проекту)...в итоге 8мб exe превратился в 3мб.
Почему студия этого не делает? Зачем она пихает в исходник то, что не будет никогда использовано?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,142
Записей в блоге: 3
09.09.2016, 10:36
Цитата Сообщение от d7d1cd Посмотреть сообщение
Зачем она пихает в исходник то, что не будет никогда использовано?
Не знаю.
Я все задумывался возможно ли придумать компонент или библиотеку,которая бы при компиляции обрезало что не нужно
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
09.09.2016, 13:28
Цитата Сообщение от Dinkin Посмотреть сообщение
компонент или библиотеку,которая бы при компиляции обрезало что не нужно
Свой оптимизатор. Это, конечно, классно было бы! Ищем в объектных файлах функции, которые не вызываются нигде и удаляем, и удаляем...

Добавлено через 2 часа 44 минуты
Цитата Сообщение от d7d1cd Посмотреть сообщение
Ищем в объектных файлах функции, которые не вызываются нигде и удаляем, и удаляем...
Сам себе не верю: это вообще реально сделать?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33369 / 21495 / 8234
Регистрация: 22.10.2011
Сообщений: 36,889
Записей в блоге: 12
09.09.2016, 14:21
Совсем недавно видел где-то на оф. форуме, что в XE4 простое снятие галки "Expand inline functions" в настройках C++ Compiler - Debugging уменьшило размер релизного EXE в 3 раза (с 55Мб до 17-ти).
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
09.09.2016, 14:44
Цитата Сообщение от volvo Посмотреть сообщение
Совсем недавно видел где-то на оф. форуме, что в XE4 простое снятие галки "Expand inline functions" в настройках C++ Compiler - Debugging уменьшило размер релизного EXE в 3 раза (с 55Мб до 17-ти).
У меня в XE8 эта галка снята по умолчанию...
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,142
Записей в блоге: 3
09.09.2016, 14:47
Цитата Сообщение от volvo Посмотреть сообщение
55Мб
Это хард кор просто, exe такого размера.
Все галки перетыкал, чет результата нет, может это актуально для больших размеров
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
09.09.2016, 14:51
Цитата Сообщение от Dinkin Посмотреть сообщение
может это актуально для больших размеров
Big size only!
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33369 / 21495 / 8234
Регистрация: 22.10.2011
Сообщений: 36,889
Записей в блоге: 12
09.09.2016, 15:01
Цитата Сообщение от d7d1cd Посмотреть сообщение
У меня в XE8 эта галка снята по умолчанию...
Когда Target = Debug - да, в Release - нет. Переключись на Release configuration сверху, через ComboBox и посмотри.
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
09.09.2016, 15:08
Цитата Сообщение от volvo Посмотреть сообщение
Когда Target = Debug - да, в Release - нет. Переключись на Release configuration сверху, через ComboBox и посмотри.
Верное, верно. Уже посмотрел. Снял галку. Размер EXE уменьшился с 2,91 Мб до 2,90 Мб.
0
0 / 0 / 0
Регистрация: 29.07.2016
Сообщений: 17
09.09.2016, 16:10  [ТС]
И у меня уменьшился с 16,5Мб до 16,3Мб после убирания этой галки.
Результат очень слабый

TDUMP рисует кучу имен из пакетов и все это запихано в exe файл.
2МБ только текст этих имен занимает...
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,142
Записей в блоге: 3
09.09.2016, 16:12
Цитата Сообщение от Kopna Посмотреть сообщение
16,5Мб
Ни че Си!! что бы сделать такой выходной файл, надо еще очень постараться .....может у вас там картинки в 4K?)
0
0 / 0 / 0
Регистрация: 29.07.2016
Сообщений: 17
09.09.2016, 16:22  [ТС]
Dinkin, к сожалению, нет.
Картинки, конечно, есть, но только размера иконок.

В исходниках 350кб. только своего кода, ну плюс
кучка сторонних библиотек.

Ресурсы около двух МБ занимают.
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,012
09.09.2016, 22:45
А имеет ли смысл использовать C++ Compiler -> Optimizations -> Generate smallest possible code для уменьшения размера кода?

0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
12.09.2016, 08:29
Цитата Сообщение от gunslinger Посмотреть сообщение
А имеет ли смысл использовать C++ Compiler -> Optimizations -> Generate smallest possible code для уменьшения размера кода?
Эм... Надо попробовать. Но сдается мне, что это имеет заметный эффект, когда размер EXE около 10-20 Мб.
0
0 / 0 / 0
Регистрация: 29.07.2016
Сообщений: 17
13.09.2016, 14:23  [ТС]
gunslinger, данная опция мало помогает, поскольку откомпилированного кода мало в разрезе всего исполняемого файла.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.09.2016, 14:23
Помогаю со студенческими работами здесь

Поместить html-страницы внутрь исполняемого файла
Здравствуйте, на форме есть WebBrowser. Нужно было открыть локальные html файлы. Использовал такой код: ...

Rad Studio окно исполняемого файла исчезает
Здравствуйте...на данный момент я создаю проект и всё отлично компилируется...вот только по истечении некоторого времени...когда я например...

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

Как записать значение CheckBox в ресурсы исполняемого файла
Здравствуйте! Заранее извиняюсь за нубский вопрос, но всё таки он мне недаёт покоя. Как можно сохранить значение CheckBox в ресурсах...

Нужно узнать имя и путь исполняемого файла, имея handle его окна
Нужно узнать имя и путь исполняемого файла, имея handle его окна. Когда используешь handle текущего окна - всё работает: long...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru