Главная страница
    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.46 MB
Время: 0.007 c
3-94695
Анна
2003-05-06 19:51
2003.05.29
Запрос


1-94869
Marina_S
2003-05-20 09:53
2003.05.29
Как расположить на форме документ HTML?


1-94898
Yakudza
2003-05-16 13:24
2003.05.29
Проверка полей в компоненте


1-94840
etem
2003-05-19 17:32
2003.05.29
% в прогресс баре?


1-94826
Ghost
2003-05-19 13:12
2003.05.29
Как вставить в image картинку из потока ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский