Вниз
Скачать: CL | DM;

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

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
14-3620
kull
2002-08-08 11:47
2002.09.02
Кто займется дизайном?


1-3354
Nikoss
2002-08-21 23:29
2002.09.02
Подскажите, как в двумерном массиве проверить есть ли данные в ст


14-3573
Posny
2002-08-06 08:32
2002.09.02
RXLib275 D6


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


7-3643
HowTo
2002-06-19 17:32
2002.09.02
При клике на кнопку изменить частоту обновления экрана на 85 Hz?




   Наверх