Форум: "Основная";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];
ВнизДва варианта подпрограмм Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c