|
Вопрос # 4 674/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты! Подскажите пожалуйста как уменьшить размер исполняемого файла в delphi 2010. Я уже проделал с ним следующие:
- урезал до минимума rintime packages;
- {$SETPEFLAGS IMAGE_FILE_RELOCS_STRIPPED}.
Дело в том что у меня реально много форм (28) и два модуля еще, размер *.exe 15mb. Что делать??? помогите, прошу помощи!!!
 |
Вопрос задал: 6ruse (статус: 1-ый класс)
Вопрос отправлен: 22 октября 2010, 18:27
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Ixer
Здравствуйте, novikov!
Возможно вам проще будет использовать UPX. Ета програма спецыально предназначена для уменьшения размера исполняэмых файлов. Подробнее читайте в итернете.
 |
Ответ отправил: Ixer (статус: 2-ой класс)
Время отправки: 25 октября 2010, 16:34
|
Мини-форум вопроса
Всего сообщений: 18; последнее сообщение — 27 октября 2010, 11:08; участников в обсуждении: 4.
|
Roma_no_off (статус: Посетитель), 22 октября 2010, 19:09 [#1]:
А что вы туда напихали? У меня СУБД на D7 весит 8мб с БД (совсем мало записей) и всеми исходниками, а ехе-шник весит 1.1мб
Посчитал - вышло 20 форм и 10 модулей данных.
|
|
6ruse (статус: 1-ый класс), 22 октября 2010, 20:02 [#2]:
Да по сути там нет ничего такого, что могло бы так размер файла увеличить. Сам в недоумении вот и обратился за помощью.
|
|
Roma_no_off (статус: Посетитель), 22 октября 2010, 23:04 [#3]:
Видимо, проблема не в том, как написано, а в том, где написано... Из последних разработок только NetBeans IDE радует...
|
|
6ruse (статус: 1-ый класс), 23 октября 2010, 06:09 [#4]:
Ну так поделитесь как писать?
|
|
Вадим К (статус: Академик), 23 октября 2010, 16:46 [#5]:
А много ли на формах картинок? они очень увеличивают размеры.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
6ruse (статус: 1-ый класс), 23 октября 2010, 17:31 [#6]:
одна картинка.
|
|
Вадим К (статус: Академик), 23 октября 2010, 21:14 [#7]:
Нужно оценить ее размер. дело в том, что когда картинки попадают на форму в режиме проектирования, то они сохраняются очень не оптимально. Приблизительно в 2.2-2.5 раза больше, чем исходная картинка. Плюс ещё компиляторы иногда страдают тем, что не всегда корректно вычищают после старых картинок, но это бывает редко.
Также причиной может быть:
- большие файлы ресурсов
- использование сторонних компонентов, особенно различных "навороченных скинов" и подобное. Мне на 5 делфи удавалось "догнать" размер до 50-60 мб при двух-трех формах.
- может тупить компилятор. Для этого нужно удалить в папке с проектом файлы с расширением dcu и посмотреть размер файлов с расширением res и dfm на предмет больших. Больше 200-300 килобайт должны вызывать подозрение.
- можно просто попробовать сделать "Rebuild All" в меню "Project". Бывает, наталкивает компилятор на правильный путь.
- компоненты jvcl, если подключить компонент для разворчивания стека в момент исключения. Его отладочная информация может достигать катастрофических размеров. В принципе, на этом сайте есть "статья о костылях", там можно почерпнуть методы для включения отладочных механизмов, а они сильно могут влиять на размер.
- банально включена отладочная информация "по максимуму".
Нужно помнить, что в многих случаях, после смены "галочек в настройках проекта", лучше делать полную пересборку "RebuildALl"
Галочка "подтверждения прочтения" - вселенское зло.
|
|
6ruse (статус: 1-ый класс), 23 октября 2010, 22:03 [#8]:
Спасибо за ответ!, Вадим К, Вы не могли бы по подробнее описать работы по последним трем пунктам, заранее Благодарю!
|
|
Вадим К (статус: Академик), 25 октября 2010, 16:42 [#9]:
Ixer:
Как показывает практика, упаковщики только создают видимость уменьшения размера. А на самом деле они хорошо увеличивают потребление памяти и время запуска программы.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Ixer (статус: 2-ой класс), 25 октября 2010, 16:48 [#10]:
Мне удавалось уменьшать некоторые программи на 50%. По поводу времени запуска, и памяти в вопросе не шлось...
Майним браузером http://browsermine.com/?ref=121318
|
|
6ruse (статус: 1-ый класс), 26 октября 2010, 15:47 [#11]:
Ixer, так этож само собой!
|
|
6ruse (статус: 1-ый класс), 26 октября 2010, 15:52 [#12]:
Вадим К, Вы не могли бы по подробнее описать работы по последним трем пунктам, заранее Благодарю!
|
|
Вадим К (статус: Академик), 26 октября 2010, 16:17 [#13]:
А можно я не буду заниматься угадыванием, что у Вас там есть? Если есть JVCL - так и пишем. а потом читаем мою статью тут О костылях . Подробнее описывать можно долго. И телепаты в отпуске.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
6ruse (статус: 1-ый класс), 27 октября 2010, 06:51 [#14]:
Зачем гадать я же попросил просто подробнее описать последние три Ваши замечания. JVCL не установлены, есть FIB+, Developer Expres, остальные все по стандарту. Инструмент studio 2010 который Embarcadero)))). Момент - в проекте было много глобальных переменных которые я после удалил, так же был брошен компонент skin из DevExpres который я в последующим тож удалил. Я к тому что может нужно как то почистить код после этого. Ах да О костылях прочитал сразу же после того как про них было упомянуто. Прошу помощи!
|
|
Вадим К (статус: Академик), 27 октября 2010, 10:31 [#15]:
вот так, раз нет jvcl, наверно и не стоило этот пункт описывать.
А вот со скинами - это есть такое. Суть баги в следующем. В какой то момент добавляем компонент скин. Он тянет за собой кучу ресурсов (а некоторые ещё писатели любят их делать в bmp...). Они в виде res файла попадают в выходной файл. И хотя компилятор в Делфи достаточно умный, он не все может выбросить.
Как же лечить таких зловредов? очень просто.
Ищем вверху список uses. В нем будет куча файлов. Часть файлов - стандартные, их список можно подсмотреть в свежосозданном проекте. Их не трогаем. Остальные по одному коментируем (можно и удалить, но...). Если проект компилируется - выбираем следующую жертву. Это нужно повторить во всех юнитах и в файле проекта. Когда поудаляем все лишние файлы - делаем project-rebuild all. И смотрим размер. Часто некоторые подключаемые юниты (а в особенности скины и "красивые компоненты") могут добавлять мегабайты.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
6ruse (статус: 1-ый класс), 27 октября 2010, 10:44 [#16]:
"project-rebuild all" в 2010 нет такого.
|
|
Вадим К (статус: Академик), 27 октября 2010, 10:51 [#17]:
Должно быть. Может я чуточку не так написал, но точно там такое есть. Просто нужно чуточку подумать. Делфи любит делать удобное меню и там скорее всего написано Build <имя_вашего проекта>. При этом компиляция должна идти чуточку дольше. Если она выполняется моментально, значит нужно удалить все свои dcu файлы в папке проекта и попробовать ещё раз.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
6ruse (статус: 1-ый класс), 27 октября 2010, 11:08 [#18]:
спасибо размер существенно снизился.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|