Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.02;
Скачать: 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 вся ветка

Текущий архив: 2002.09.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
3-3253
Tony Green
2002-08-09 16:50
2002.09.02
Как работать с транзакциями в MDI приложении?


1-3420
Vlad2
2002-08-22 06:53
2002.09.02
Использование типа record


1-3492
AFROLOV
2002-08-21 11:40
2002.09.02
Как во время вып. прог. устан. обработчик на соб. и его снять


3-3304
Азазелло
2002-08-13 09:00
2002.09.02
Удаленная работа с MSSQL


4-3691
Arthur Gexon
2002-05-12 13:51
2002.09.02
Отлов запуска Win-приложений