Форум: "Основная";
Текущий архив: 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