Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.26;
Скачать: 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 вся ветка

Текущий архив: 2008.10.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
2-1221661922
DancerMan
2008-09-17 18:32
2008.10.26
TListView переместиться в конец списка


2-1221929674
_Image_
2008-09-20 20:54
2008.10.26
Загружено ли изображение в Image


15-1220005532
ekto
2008-08-29 14:25
2008.10.26
Asus-Lamborgini ноутбук


15-1220500439
@!!ex
2008-09-04 07:53
2008.10.26
Как получить список функций из dll?


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