Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];

Вниз

Помогите с оптимизацией использования процедур.   Найти похожие ветки 

 
Cr@sh   (2002-08-21 15:48) [0]

Ув. мастера, ответьте, пожалуйста, на следующий вопрос:
В программе нужно использовать повторение кода, схематично это можно изобразить так:

1)
function sum2;
begin
result:= 1+1 ;
end;

function sum4;
begin
result:= 1+1 +2;
end;

2)
function sum2 ;
begin
result:=1+1;
end;

function sum4;
begin
result:= sum2 +2;
end;
------------------------------------------------

Какой вариант лучше выбрать 1 или 2, какой вариант отнимает меньше системных ресурсов и/или выполняется быстрее?
Заранее спасибо.


 
Zaxar   (2002-08-21 15:55) [1]

Первый займет меньше сис. ресурсов , а второй более соответствует правилам.
Одно из правил составления алгоритьмов - массовость !

:-)


 
lenin   (2002-08-21 15:56) [2]

Не знаю как оптимальнее, но практичнее было бы использовать перегружаемые процедуры и функции.


 
TCrash   (2002-08-21 16:02) [3]

Лучше всего будет так :
function sum2;
begin result:=2 end;

function sum4;
begin result:=4 end;
Но это шутка.

Все зависит от объема кода, который содержится в Sum2. Ну и от того, критично-ли для программы время, которое затратит программа на вызов функции (не думаю что пара-тройка лишних asm-инструкций сделают тебе погоду по скорости работы программы).
Ну а с точки зрения объема результирующего кода ..... :-))
И еще с точки зрения удобочитаемости текста программы. Лучше вариант 2.

Собственно : вариант 1 - отнимает меньше памяти, а вариант 2 - даст несколько наносекунд выигрыша по времени за одно исполнение функции sum4.


 
kull   (2002-08-21 16:07) [4]

Мне кажется, что надо оптимизировать выбирая оптимальный алгоритм, а не дублируя код, или делая ассемблерные вставки (это последнее дело).


 
Cr@sh   (2002-08-21 16:17) [5]

Спасибо, всем за ответы. Но вот появился еще один вопрос:
Есть процедура...

procedure zxc123;
begin

if... then
drugaya_procedura1;

if... then
drugaya_procedura2;

end;
----------------------------
Возможно ли сделать, так, чтобы второй if не начинался пока не закончится drugaya_procedura1?
----------------------------
И еще объясните, когда я использую try...finally, допустим так:

try
i:=1+1;
drugaya_procedura1;
finally
n:=5+5
end;

finally будет начинатся после полного выполнения drugaya_procedura1 или нет?


 
DiamondShark   (2002-08-21 17:47) [6]


> Cr@sh © (21.08.02 16:17)
>
> Возможно ли сделать, так, чтобы второй if не начинался пока
> не закончится drugaya_procedura1?


Не просто возможно, а именно так и будет.


> finally будет начинатся после полного выполнения drugaya_procedura1
> или нет?


Смотри выше.

PS
Откуда такое нетривиальное мировоззрение?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-3481
GreatQuaker
2002-08-21 10:46
2002.09.02
Многостраничный Hint для программы в Трее


14-3563
chsv
2002-08-04 17:11
2002.09.02
Существует ли визуальный компонент TDBTreeView?


14-3574
AL2002
2002-08-05 18:25
2002.09.02
А есть в И-нете летописи о конкурсах КВН?


1-3339
Smok_er
2002-08-21 18:27
2002.09.02
DblClick на Tab e PageControl a


1-3413
ev
2002-08-21 21:30
2002.09.02
разделители в ToolBar (как в ворде)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский