Вниз
Скачать: CL | DM;

Как работает оптимизатор размера проектов в Delphi ?   Найти похожие ветки 

← →
Альф   (2008-09-01 12:12) [0]

Подскажите кто знает, как работает в Delphi оптимизатор включенных в проект модулей ?
Где об этом почитать и можно ли каким-то образом предсказать его поведение ?


← →
Альф   (2008-09-01 12:13) [1]

Используя встроенный в Delphi7 анализатор на примере размера кода uses System и SysUtils получаем такие результаты:

Пустой проект

Name      Size Group Package
-------- ----- ----- -------
System   8 707 CODE

Добавление uses SysUtils

Name       Size Group Package
-------- ------ ----- -------
System   13 151 CODE
SysUtils 13 312 CODE

Добавление кода
 i := 33;
 s := IntToStr(i);

Name       Size Group Package
-------- ------ ----- -------
System   13 151 CODE
SysUtils 13 344 CODE

Добавление uses Classes

Name        Size Group Package
--------- ------ ----- -------
Classes   13 414 CODE
System    17 411 CODE
SysUtils  24 108 CODE

Добавление кода
 comp := TComponent.Create(nil);
 comp.Free();

Name        Size Group Package
--------- ------ ----- -------
Classes   26 986 CODE
System    18 315 CODE
SysUtils  24 456 CODE

Добавление uses Sockets

Name        Size Group Package
--------- ------ ----- -------
Classes   26 986 CODE
Sockets      279 CODE
System    18 315 CODE
SysUtils  24 456 CODE

Добавление кода
 tcpcli := TTCPClient.Create(nil);
 tcpcli.Free();

Name        Size Group Package
--------- ------ ----- -------
Classes   26 986 CODE
Sockets    3 671 CODE
System    18 371 CODE
SysUtils  24 776 CODE


← →
Сергей М. ©   (2008-09-01 12:25) [2]


> Альф   (01.09.08 12:13) [1]


И что тебя смущает в этих результатах ?


← →
Альф   (2008-09-01 14:13) [3]

Меня не смущает :) Хочу разобраться как работает.

Вот возьмём 2-ой и 3-ий результат из примера:
Какая часть SysUtils добавилась в проект ? Это секция инициализации занимает 13 312 байта ? Или еще что-то ...
А при использовании в проекте IntToStr - что именно в этих добавочных 32 байтах ?


← →
Игорь Шевченко ©   (2008-09-01 14:14) [4]

Все описание можно свести к четырем словам:
оптимизатор исключает неиспользуемые процедуры.


← →
Альф   (2008-09-01 14:31) [5]


> Игорь Шевченко ©   (01.09.08 14:14) [4]
> Все описание можно свести к четырем словам:
> оптимизатор исключает неиспользуемые процедуры.


Это всё конечно прекрасно, но к сожалению, Игорь, эта формальная фраза  не способствует пониманию процесса.
Это как фраза учителя по физике: "Электрический ток это упорядоченное движение заряженных частиц в проводнике" - а толком на пальцах рассказать никто не может.

Т.е. получается эти 32 байта = размер функции IntToStr ?


← →
Игорь Шевченко ©   (2008-09-01 15:35) [6]


> Это всё конечно прекрасно, но к сожалению, Игорь, эта формальная
> фраза  не способствует пониманию процесса.


Linker Options|Map|Detailed более способствует пониманию процесса.


← →
Сергей М. ©   (2008-09-01 16:06) [7]


> Это секция инициализации занимает 13 312 байта ?


Код секции инициализации + код п/программ, используемых при инициализации



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
15-1220463031
Сергей М.
2008-09-03 21:30
2008.10.26
hMailServer


1-1200945405
RzCoDer
2008-01-21 22:56
2008.10.26
Перехват консольного вывода


15-1220271440
md10
2008-09-01 16:17
2008.10.26
рекламный плагин ИЕ


15-1220209537
Dmitry S
2008-08-31 23:05
2008.10.26
Как выполнить любой метод?


2-1221546073
dmitry_12_08_73
2008-09-16 10:21
2008.10.26
Определение идентификатора потока




   Наверх