Вниз
Скачать: 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-3594
Afrolov
2002-08-05 17:01
2002.09.02
Проблема с записью CD-RW дисков в winXP


3-3266
Loco
2002-08-12 14:25
2002.09.02
Поиск


3-3301
BigVova
2002-08-09 18:15
2002.09.02
Проблема с IB 6.0


1-3401
NeyroSpace
2002-08-22 14:14
2002.09.02
Хелп! НЕ ПОНИМАЮ В ЧЕМ ДЕЛО !


1-3427
Netizen
2002-08-22 23:00
2002.09.02
Как найти подстроку в строке???




   Наверх