![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Время выполнения процедуры [D7, XP]
AlexanderMS © (2006-07-05 18:58:00)Как мне узнать, как долго выполнялась та или иная процедура? Мне нужно найти самый быстрый способ реализации алгоритма. Как мне узнать это время?
umbra (2006-07-05 19:40:00) [1]а какая точность нужна? если низкая, то можно просто в начале функции и в ее конце получать значение функции
Now, и по разности этих значений определять прошедшее время
koha (2006-07-05 19:28:00) [2]Попробуй так:
var
Form1: TForm1;
TimeStart,TimeEnd: integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
TimeStart:=GetTickCount();
sleep(100);
TimeEnd:=GetTickCount()-TimeStart;
ShowMessage(IntToStr(TimeEnd));
end;
Время получишь в "милесекондсах".
Пусик (2006-07-05 19:26:00) [3]
> Пусик © (05.07.06 19:13) [2]
Прошу прощения. Типы данных не те:
var
BeginTime: Int64;
ProcTime: Double;
begin
BeginTime := TickCount;
<Выполнение процедуры>
ProcTme := DeltaTickToSeconds(TickCOunt-BeginTime);
Пусик (2006-07-05 19:13:00) [4]
function TickCount:Int64;
begin
QueryPerformanceCounter(Result);
end;
function DeltaTickToSeconds(const Delta: Int64):Double;
var
TickFreq: Int64;
begin
QueryPerformanceFrequency(TickFreq);
Result := Delta/TickFreq;
end;
var
BeginTime: Int64;
ProcTIme: Int64;
begin
BeginTime := TickCount;
<Выполнение процедуры>
ProcTme := DeltaTickToSeconds(TickCOunt-BeginTime);
см. также GetThreadTimes.
Virgo_Style (2006-07-05 19:13:00) [5]Now и GetTickCount, например
StriderMan (2006-07-05 18:59:00) [6]логи вести