Когда приложение Delphi слишком велико для одного EXE-файла? - PullRequest
11 голосов
/ 18 ноября 2011

Если я скомпилирую все приложение Delphi в один exe-файл, этот файл вырастет до 5 МБ, 10 МБ, а может и больше. Когда это слишком большой? Какие проблемы с этим? Это коммерческое приложение, в настоящее время на Delphi XE.

Мне известно о возможности сборки с помощью пакетов времени выполнения. Это звучало как хорошая идея, но я вижу здесь комментарии, отмечающие, что есть некоторые проблемы и недостатки.

Ответы [ 3 ]

32 голосов
/ 18 ноября 2011

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

Целый ряд факторов приводит к расширению исполняемого файла:

  • включение отладочной информации (более или менее удвоит размер исполняемого файла).enter image description hereОтключите включение отладочной информации в окончательный исполняемый файл (см. Скриншот выше).
  • , включая растровые изображения (в imagelist или аналогичном компоненте), также существенно увеличит исполняемый файл.
  • , включая файл ресурсов (используя пользовательский * .res), увеличит размер.

Я бы посоветовал против помещать ресурсы в отдельную DLL.
Это усложнит ваше приложение, не уменьшая при этом время загрузки и проблемы с распространением.
ОтключениеОтладочная информация в производственном коде обязательна.
Если у вас Delphi-2010 или новее, вы можете включить изображения в формате png.
Это займет гораздо меньше места, чем растровые изображения old-skool.

Пока ваше приложение меньше 30 МБ, я бы не стал сильно беспокоиться о размере файла.

Обрезать информацию RTTI
Дэвид предлагает удалить информацию RTTI (это отключит привязки в реальном времени и некоторые другие дополнительные функции), см .: Уменьшить исполняемый файл
По словам Дэвида, он экономит около 30% в размере exe.

Exe-size только увеличит время загрузки
Гораздо важнее объем данных, который ваше приложение выделяет в качестве хранилища.
Объем пространства, которое вы используете (или тратите)здесь это окажет гораздо большее влияние на производительность вашего приложения, чем размер исходного файла.
Стратегия или инструменты для обнаружения проблем с использованием памяти без утечек в Delphi?

Лучший способ оптимизации - убедиться, что вы не пропускаете ресурсы
Как активировать ReportMemoryLeaksOnShutdown только в режиме отладки?
Windows API вызывает утечку памятиобнаружение

Используйте интеллектуальные структуры данных и алгоритмы
Это слишком обобщенно, чтобы действительно сузить его, но используйте алгоритмы с O ( медленно увеличивается )более O ( расточительное увеличение ).
Big-O для восьмилетних?
И попытаться ограничить использование памяти, выбирая только нужные данные вместо всехданные, которые вы могли бы нужно , но, вероятно, никогда не будет .
структуры данных Delphi
и т. д. и т. д.

4 голосов
/ 18 ноября 2011

Я не знаю проблем с exe-размером приложения. В настоящее время я работаю в приложении, где exe составляет около 60 МБ, и нет никаких проблем.
Единственное ограничение, которое я знаю, это ограничение доступной памяти. А приложение с использованием runtime-пакетов будет занимать больше рабочей памяти, потому что все исполняемые пакеты загружаются при запуске приложения. И пакеты содержат много кода, который, вероятно, не используется в вашем приложении.
Мне действительно нравится идея runtime-пакетов, но мне не нравится реализация в Delphi. Одним из основных недостатков является то, что вы должны поставлять свое приложение с кучей пакетов, которые усложняют обслуживание.

1 голос
/ 25 апреля 2012

используйте RELEASE Build для уменьшения размера выполнения, увеличения производительности. Также используйте пакет времени выполнения для уменьшения exe-файла, но используйте пакет времени выполнения, чтобы увеличить размер файла пакета (установки).

...