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

Два варианта подпрограмм   Найти похожие ветки 

 
R   (2003-05-19 09:46) [0]

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

Вариант 1 в основной процедуре размещена допонительная

procedure Основная;
procedure Дополнительная;
begin
end;

begin
Дополнительная;
end;


Вариант 2 дополнительная вне тела основной

procedure Основная;
begin
Дополнительная;
end;

procedure Дополнительная;
begin
end;


 
Bel ©   (2003-05-19 09:58) [1]

По-моему, никакой разницы в оптимальности кода и ресурсозатратах системы нет. Код для обоих процедур генерится одинаковый, места занимает столько же, вызов одной процедуры из другой будет происходить по call и там, и там. Разница только в области видимости процедуры. В первом случае можно будет использовать вложенную процедуру только в основной.


 
DVM ©   (2003-05-19 10:02) [2]

Скомпилируй, сравни размер и скорость работы. Только процедуры не надо пустыми делать, а то компилятор их выкинет. В них должно быть что то полезное, например вывод на экран вычисляемого значения.


 
Digitman ©   (2003-05-19 10:06) [3]


> R


совершенно никакой разницы

варианты отличаются лишь областью видимости идентификаторов


 
Bel ©   (2003-05-19 11:00) [4]

Вообще, существует правило (в книжке прочитал): делай область видимости идентификатора (процедуры ли, или переменной, или поля) как можно меньше, пока тебе не потребуется её расширить.


 
Ihor Osov'yak ©   (2003-05-19 11:20) [5]

2 Digitman © (19.05.03 10:06)

> совершенно никакой разницы


Разница есть. При использовании вложенных процедур перед вызовом вложенной процедуры делается push ebp с целью обеспечения доступа к лакальным переменным вызывающей процедуры..


 
Digitman ©   (2003-05-19 12:07) [6]


> Ihor Osov"yak


ты прав, но это не в любом случае - факт.

оптимизатор волен "выкинуть" бестолковые push..pop, если в теле вызываемой лок.подпрограммы нет обращения к лок.переменным вызывающей подпрограммы


 
Ihor Osov'yak ©   (2003-05-19 12:16) [7]

> не в любом случае - факт
> оптимизатор волен "выкинуть" бестолковые push..pop, если в теле вызываемой лок.подпрограммы нет обращения к лок.переменным вызывающей подпрограммы

А с этим никто и не спорит :-). То есть в случае отсутсвия обращений к локальным переменным вызывающей процедуры - разницы никакой..



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

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



Память: 0.46 MB
Время: 0.012 c
7-95141
keymaster
2003-03-30 22:25
2003.05.29
Свой шрифт в программе


14-95003
MDFE
2003-05-10 14:06
2003.05.29
Редактор дайджестов форума


3-94710
Пикулев Евгений
2003-05-08 05:57
2003.05.29
Как из одной таблицы принять данные в другую такуюже


3-94734
Саня
2003-05-08 19:54
2003.05.29
Как подсоединиться к запароленному файлу


8-94970
belocarsk
2003-02-13 05:52
2003.05.29
ID3v2




   Наверх