EXE, сокращение ресурсов и кода - PullRequest
5 голосов
/ 06 января 2009

Как я могу уменьшить ресурсы внутри моего приложения? Я перепробовал несколько трюков Я уменьшил и переписал код, уменьшил номер строки, Уменьшить комментарии, Сжатый финальный EXE, но я не хочу, Улучшить приведение типа переменной, Удалите иконки, BMP, JPG из приложения Мне нужно, чтобы мои приложения были как можно меньше на конечном EXE и в общем потреблении ресурсов. Есть еще идеи, любые хорошие статьи на эту тему Спасибо

Ответы [ 13 ]

10 голосов
/ 06 января 2009

Как насчет отключения отладочной информации в опциях проекта:

  • нет отладочной информации
  • нет проверок во время выполнения
  • по возможности уменьшите количество использований внешних устройств.

Но отладочная информация может стать главным убийцей.

9 голосов
/ 06 января 2009

Я бы не стал тратить время на удаление комментариев, так или иначе компилятор удаляет их

Вы можете ссылаться на свои изображения из внешнего сервиса (например, Amazon S3)

8 голосов
/ 06 января 2009

Поместите любые изображения, которые программа использует более одного раза, в списки изображений или компоненты TGraphic и поместите их в модуль данных. Свяжите все ваши компоненты, используя эти символы, со списками изображений. Если вы используете Инспектор объектов, чтобы добавить один и тот же глиф к нескольким компонентам, вы получите несколько его копий, что увеличит как время загрузки, так и размер исполняемого файла и рабочего набора.

7 голосов
/ 06 января 2009

Хорошая уловка для уменьшения размера исполняемого файла (на самом деле, размера PE-образа, поскольку это относится и к DLL), когда перемещение не является проблемой:

Не указывайте информацию о переезде!

В Delphi вы можете сделать это так:

// Remove relocation table (generates smaller executables) :
// (See http://hallvards.blogspot.com/2006/09/hack12-create-smaller-exe-files.html)
{$SetPEFlags 1} // 1 = Windows.IMAGE_FILE_RELOCS_STRIPPED

Ура!

4 голосов
/ 06 января 2009

Измерьте сначала, ТО оптимизируйте. Насколько велико ваше приложение и каким оно должно быть?

Вы обеспокоены ...

Размер файла приложения .EXE на диске? Тогда ...

  • Сборка с пакетами времени выполнения на . Вы получите крошечный .EXE, но вам также понадобится распространять .bpls.

Оперативная память, используемая приложением? Тогда ...

  • Сборка с выключенными пакетами времени выполнения - компоновщик пропустит большинство неиспользуемых частей пакетов.

Размер установщика приложения? Тогда ...

  • Сборка с пакетами времени выполнения off
  • Использовать Inno Setup
  • Большинство предложений выше?

Размер приложения PLUS PACKAGES / DLLS после установки? Тогда ...

  • Сборка с пакетами времени выполнения off и использование UPX
4 голосов
/ 06 января 2009

Бросьте VCL и используйте KOL и MCK: http://kolmck.net/

Это радикальное и очень большое изменение, но уменьшит размер exe.

4 голосов
/ 06 января 2009

Не создавайте все формы автоматически, даже несмотря на то, что Delphi предоставляет вам возможность сейчас и делал это безоговорочно для новых форм в более ранних версиях. Создайте только основную форму и используйте следующий (псевдо) код для отображения модальных диалогов:

procedure TMainForm.OptionDialog(Sender: TObject);
var
  Dlg: TOptionDialog;
begin
  Dlg := TOptionDialog.Create(nil);
  try
    // prepare dialog
    if Dlg.ShowModal = mrOK then begin
      // apply changed settings
    end;
  finally
    Dlg.Free;
  end;
end;

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

3 голосов
/ 06 января 2009
Project -> Options -> Compiler:
===============================
Optimization ON
Debug Information OFF
Local Symbols OFF
Reference Info OFF
Use debug DCUs OFF

Project -> Options -> Packages:
===============================
Build with runtime packages ON (but you will have to distribute your BPLs!)
Note to non-delphi folks:
a BPL is just a DLL, but with magic Delphi dust to make it easier to use.

Эта статья может быть полезна для вас.

2 голосов
/ 06 января 2009

Как правило, если вы хотите уменьшить размер EXE, используйте более раннюю версию Delphi.

2 голосов
/ 06 января 2009

Действительно ли это стоит всех этих неприятностей? Мы больше не живем с 640 КБ памяти.

Если вы хотите, чтобы размер вашего EXE-файла был меньше, используйте динамическое связывание пакетов и библиотек. Это дает большую часть ускорения. Также поместите все ваши ресурсы (изображения, звуки) в отдельную DLL. Вы ничего не сохраните, удалив комментарии и записав весь свой код в одну длинную строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...