|
| millisekunder i delphi Fra : Delphimann Mann |
Dato : 03-10-01 08:34 |
|
Hej
Jeg har skrevet nogle rutiner hvis tidsforbrug jeg gerne vil teste.
Jeg har prøvet med funktionen NOW og GETTICKCOUNT, men de returnerer kun
hundrededele sekunder, 10,20,30 o.s.v.
Hvordan løser jeg dette problem ?
--
Posted from ip18.upnxr2.ras.tele.dk [195.215.94.18]
via Mailgate.ORG Server - http://www.Mailgate.ORG
| |
Thomas Rose (03-10-2001)
| Kommentar Fra : Thomas Rose |
Dato : 03-10-01 10:21 |
|
Hej Delphimann Mann,
"Delphimann Mann" <c_a@mail.tele.dk> wrote in message
news:6dede24b641923f92a6cab8d17b16756.30063@mygate.mailgate.org...
> Jeg har skrevet nogle rutiner hvis tidsforbrug jeg gerne vil teste.
> Jeg har prøvet med funktionen NOW og GETTICKCOUNT, men de returnerer kun
> hundrededele sekunder, 10,20,30 o.s.v.
> Hvordan løser jeg dette problem ?
Så vidt jeg ved er GetTickCount noget af det mest præcise du kan bruge... og
jeg forstår ikke, hvis du kun får resultatet i hundrededele sekunder. Jeg
har lige forsøgt med et lille testprogram, og det returnerede vha.
GetTickCount resultatet i tusindedele... Desuden foretrækker jeg
GetTickCount til profilering, da Now returnerer en TDateTime der skal
konverteres før den kan bruges...
Hvad er der for et stykke kode (eller flere stykker) du ønsker at
tids-profilere? Måske kan problemet ligge der!? [Hvilken platform kører du
forresten på?]
Cheers,
Thomas
| |
Uffe Kousgaard (03-10-2001)
| Kommentar Fra : Uffe Kousgaard |
Dato : 03-10-01 10:43 |
|
Hej
Gettickcount returnerer millisekunder, men sidste ciffer er næsten altid 0,
så i praksis bliver det hundrede-dele.
Bedste forslag er at lade din rutine kører 10 gange. Eller kig nærmere her:
http://www.prodelphi.de/
Hilsen
Uffe
"Delphimann Mann" <c_a@mail.tele.dk> wrote in message
news:6dede24b641923f92a6cab8d17b16756.30063@mygate.mailgate.org...
> Hej
> Jeg har skrevet nogle rutiner hvis tidsforbrug jeg gerne vil teste.
> Jeg har prøvet med funktionen NOW og GETTICKCOUNT, men de returnerer kun
> hundrededele sekunder, 10,20,30 o.s.v.
> Hvordan løser jeg dette problem ?
>
>
> --
> Posted from ip18.upnxr2.ras.tele.dk [195.215.94.18]
> via Mailgate.ORG Server - http://www.Mailgate.ORG
| |
Stig Johansen (03-10-2001)
| Kommentar Fra : Stig Johansen |
Dato : 03-10-01 17:58 |
|
Delphimann Mann wrote:
> Hej
> Jeg har skrevet nogle rutiner hvis tidsforbrug jeg gerne vil teste.
> Jeg har prøvet med funktionen NOW og GETTICKCOUNT, men de returnerer kun
> hundrededele sekunder, 10,20,30 o.s.v.
> Hvordan løser jeg dette problem ?
>
Hej.
Jeg har ikke selv haft brug for dette, men i løbet af årene, mener jeg der
er flere, der har haft samme udfordring.
Prøv at søge på 'high speed timer' eller 'high resulution timer'.
Så vidt jeg husker, er der noget i 'mmsystem' - uniten, der kan bruges.
(Jeg har selv været tilfreds med gettickcount)
--
Med venlig hilsen / Best regards
Stig Johansen
linux@w3data.dk
| |
Casper A. Hansen (04-10-2001)
| Kommentar Fra : Casper A. Hansen |
Dato : 04-10-01 09:57 |
|
"Delphimann Mann" <c_a@mail.tele.dk> wrote in message news:<6dede24b641923f92a6cab8d17b16756.30063@mygate.mailgate.org>...
> Hej
> Jeg har skrevet nogle rutiner hvis tidsforbrug jeg gerne vil teste.
> Jeg har prøvet med funktionen NOW og GETTICKCOUNT, men de returnerer kun
> hundrededele sekunder, 10,20,30 o.s.v.
> Hvordan løser jeg dette problem ?
Det er korrekt at GetTickCount og Now kun returnere 1/100 sekund.
QueryPerformanceCounter tæller hele tiden op, og
QueryPerformanceFrequence er en konstant for hvormeget
QueryPerformanceCounter tæller op hvert sekund.
Nedenstående er et eksempel på hvordan man kan bruge dem.
uses
Windows;
procedure ResetTimer(out ATimer : Int64);
begin
QueryPerformanceCounter(ATimer);
end;
function GetCurrentTimems(const ATimer : Int64) : Integer;
var
wTime : Int64;
wFrequency : Int64;
begin
QueryPerformanceCounter(wTime);
wTime := wTime - ATimer;
if QueryPerformanceFrequency(wFrequency) then begin
Result := wTime * 1000 div wFrequency;
end else begin
Result := -1;
end;
end;
procedure DinFunktion;
var
wTime : Int64;
begin
Reset(wTime);
...
OutputDebugString(PChar(Format('Det tog: %d ms',
[GetCurrentTimems(wTime)])));
end;
| |
|
|