Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Компиляция


Страницы:   1 2

PURGEN ©   (2004-12-05 18:03:00) 

Существуют ли настройки компилятора, с помощью которых можно уменьшить размер EXE. Например убрать неиспользуемые компоненты и т.п.


PVOzerski   (2004-12-06 16:51:00) [1]

За счет .reloc много не сэкономишь... Радикальный путь: 1) отказаться от VCL; 2) Если нужно OOP, использовать не классы, о объекты старого образца (там эффективнее отбрасывается "мертвый код" за счет исключения полностью перекрытых виртуальных методов). Именно по этому принципу работает KOL.


Amoeba   (2004-12-06 14:02:00) [2]

Можно дополнительно уменьшить размер уже откомпилированного приложения за счет удаления таблицы релокаций утилитой StripReloc.
http://www.jrsoftware.org/striprlc.php

StripReloc is a free (GPL license) command line utility that removes the relocation (".reloc") section from Win32 PE EXE files, reducing their size. Most compilers/linkers (including Delphi) put a relocation section in EXE files, but this is actually not necessary since EXEs never get relocated. Hence, a relocation section only wastes space.

This program is designed for developers to run on their own applications' executables only. It is not recommended that you run StripReloc indiscriminately on all EXEs you come across, because certain programs may rely on their internal structure staying intact.

StripReloc will not run on DLLs because they can get relocated, and thus need a relocation section.

EXEs run through StripReloc work on all Windows OSes since Windows 95 and NT 3.51 (at least). Windows 3.1x with Win32s is not supported.


Gloomer   (2004-12-06 12:53:00) [3]

А слона то я и не заметил :-(  Ну тогда уж там есть еще и finalization, так же использующий код модуля.
Для уменьшения размера ехе могу еще предложить компелировать в более ранних версиях Delphi со всеми вытекающими последствиями несовместимости версий. А вообще интересно проследить зависимость увеличения размера конечного файла от увеличения версии Delphi, в которой производилась конечная компиляция.


Anatoly Podgoretsky   (2004-12-06 12:35:00) [4]

Точно также используешь, смотри Initialisation


Gloomer   (2004-12-06 12:30:00) [5]

Хорошо, что мешает сделать
program Project2;
uses SysUtils;
begin
end.

Изменение размера все равно есть, хотя, конечно, гораздо меньше.
Я просто высказываюсь против того, что компилятор не включает в используемый код неиспользуемые модули.
Или я неправильно понимаю "неиспользуемые модули", может это не указанные в секции Uses ???


Anatoly Podgoretsky   (2004-12-06 12:18:00) [6]

Нет с комментириями, ты используешь много кода из Forms.
Не веришь, тогда посмотри Initialisation


Gloomer   (2004-12-06 12:13:00) [7]


> novice__man   (05.12.04 18:59) [7]
> Компилятор не включает в исполняемый код не используемые
> модули.

Были времена, когда я тоже так думал :-(
Сравните скомпеллированный размер следующих программ
первая
program Project1;

begin
end.


вторая
program Project2;
uses Forms;
begin
end.


Без коментариев :-(
Кстати, если посмотреть исходик forms.pas, то видим
uses Messages, Windows, SysUtils, Classes, Graphics, Menus, Controls, Imm,  ActnList, MultiMon, HelpIntfs;

Так что если есть хоть одна форма, то SysUtils будет присутствовать в ехе-шнике. Вывод - поможет только WinAPI.


novice__man   (2004-12-05 19:13:00) [8]

Не, ну ваще. :))

из анегдота:
"... ну как вам сказать, Ламер Масдаевич?"


TButton   (2004-12-05 19:08:00) [9]

QED
Quod Erat Demonstrantum


begin...end   (2004-12-05 19:08:00) [10]

> [13] novice__man   (05.12.04 19:07)

ЧТД = Что и требовалось доказать :-)


novice__man   (2004-12-05 19:07:00) [11]


begin...end ©   (05.12.04 19:04) [12]

> [11] novice__man   (05.12.04 19:04)

ЧТД


???????? :(


begin...end   (2004-12-05 19:04:00) [12]

> [11] novice__man   (05.12.04 19:04)

ЧТД


novice__man   (2004-12-05 19:04:00) [13]

Проверил и с SysUtils и без размер *.ехе не изменился :)


TButton   (2004-12-05 19:01:00) [14]


> И много сэкономит места....

процентов 20 если мне не изменяет память *но это если проект чистый*


PURGEN   (2004-12-05 18:59:00) [15]


> begin...end ©   (05.12.04 18:55) [5]

И много сэкономит места....


TButton   (2004-12-05 18:59:00) [16]


> SysUtils ???
> Удалить модуль из ЮЗЕС что ли?

а ты его пользуешь?


novice__man   (2004-12-05 18:59:00) [17]

Компилятор не включает в исполняемый код не используемые модули.


PURGEN   (2004-12-05 18:56:00) [18]

Асемблер конечно штука хорошая! Хочешь в ЕХЕ хочешь обратно в код, но Делфя как-то более по душе....


begin...end   (2004-12-05 18:55:00) [19]

> [3] PURGEN   (05.12.04 18:53)

Конечно, нафиг он нужен.


Yanis   (2004-12-05 18:54:00) [20]

Assembler - лучше для мужчины(программиста) нет (с).
Не складно, зато правда! :)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо