Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

Хороший трюк для уменьшения размера исполняемого файла (на самом деле, размера 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

Ваше здоровье!

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

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

Не создавайте все формы автоматически, даже несмотря на то, что 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;

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

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

Вас беспокоит...

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

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

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

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

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

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

Размер приложения ПЛЮС ПАКЕТЫ/DLLS после установки?Затем...

  • Сборка с использованием пакетов времени выполнения выключенный, и используйте UPX
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.

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

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

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

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

Я всегда использую UPX для сжатия исполняемых файлов. Это работает отлично, часто приводя к сжатию фактора 2. И, конечно же, отключение всей отладочной информации поможет уменьшить размер файла.

Используйте профилировщик памяти, например, тот, что из Red Gate , чтобы получить представление в реальном времени об использовании памяти во время выполнения.

UPX и ASPack создадут много проблем из-за ложных срабатываний антивируса. Касперский делает это много!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top