Главная страница
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.016 c
3-94754
Arkady
2003-05-09 15:29
2003.05.29
Максимальный объем базы данных Access 2000


3-94753
Robber
2003-05-11 14:25
2003.05.29
Вопрос! Как упаковать БД в Delphi?


14-95032
Pat
2003-05-08 16:21
2003.05.29
Выключение Win2k


7-95150
Azbul
2003-03-27 09:46
2003.05.29
как закрыть процесс


3-94691
Filat
2003-05-07 15:25
2003.05.29
Как юзать IBBackupService и IBRestoreService?