Главная страница
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.023 c
14-95016
Uran
2003-05-13 09:50
2003.05.29
Определение software, hardware.


1-94817
evvcom
2003-05-16 11:35
2003.05.29
Есть ли такая мнемокоманда в TASM


14-95063
Nox
2003-05-09 14:13
2003.05.29
Управление момедом.


7-95149
Dmit
2003-03-30 17:38
2003.05.29
PrintScreen


1-94818
Hooch
2003-05-19 13:15
2003.05.29
---|Ветка была без названия|---