Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Cr@sh ©   (2002-08-21 15:48:00) 

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

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, какой вариант отнимает меньше системных ресурсов и/или выполняется быстрее?
Заранее спасибо.


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


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


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


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


Смотри выше.

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


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

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

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 или нет?


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

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


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

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

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

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

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


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

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


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

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

:-)


Наверх

Титульная страница Поиск, карта сайта Написать письмо