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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
1-94915
mdk
2003-05-16 22:39
2003.05.29
как мне %x заменить на переменную x в строке?


3-94699
Tolik_temp
2003-05-07 22:39
2003.05.29
DBEDIT aka MaskEdit


14-95081
Дмитрий К.К.
2003-05-10 13:39
2003.05.29
Именинники 10 мая


3-94726
Olga
2003-04-29 13:13
2003.05.29
Как заставить базу понимать запятую в качестве разделителя?


3-94764
rosl
2003-05-12 03:26
2003.05.29
открыть excel