![]() |
QuickSort zu schnell für GetTickCount?
Hallo zusammen...
Kann es sein das QuickSort so schnell ist das GetTickCount die geschwindigkeit nicht mehr berechnen kann? Hier mal der Quellcode dazu...
Delphi-Quellcode:
Als Ergebnis kommt immer 0 raus...
procedure THauptprogramm.bQuickSortClick(Sender: TObject);
var i,start,stop,Ausgabe : integer; begin start := GetTickCount; QuickSort(Feld,Low(Feld),High(Feld)); stop := GetTickCount; Ausgabe := Stop-Start; for i := low(Feld) to high(Feld) do begin sgToSort.Cells[i,0] := IntToStr(Feld[i]); end; if cbBerechnung.Checked = True then MessageDlg('QuickSort benötigte: '+IntToStr(Ausgabe)+'ms',mtInformation,[mbOk],0) else MessageDlg('Es wurde sortiert!',mtInformation,[mbOk],0); end; Gibt es eine bessere Möglichkeit sowas zu berechnen als mit GetTickCount??? |
Re: QuickSort zu schnell für GetTickCount?
Jepp, genauer als GetTickCount ist QueryPerformanceCounter(). Such mal hier im Forum oder alternativ im Msdn danach.
|
Re: QuickSort zu schnell für GetTickCount?
Zitat:
|
Re: QuickSort zu schnell für GetTickCount?
Schau Dir doch das
![]() |
Re: QuickSort zu schnell für GetTickCount?
Delphi-Quellcode:
Übrigens: Wenn du unbedingt die benötigte Zeit (also zum Beispiel Millisekunden) ermitteln willst, musst du noch mit QueryPerformanceFrequency arbeiten, denn diese Frequenz hängt vom Prozessor ab und ist von daher nicht an jedem PC gleich (hoffentlich hab ich da jetzt nichts falsches gesagt, weiß es nicht mehr ganz genau :cyclops: )
var
Start, Ende: Int64; begin QueryPerformanceCounter(Start); Funktion(); QueryPerformanceCounter(Ende); ShowMessage(IntToStr(Ende - Start)); end; |
Re: QuickSort zu schnell für GetTickCount?
Zitat:
Nun funktioniert es auch :-D Danke für die schnellen Antworten :dp: |
Re: QuickSort zu schnell für GetTickCount?
Eine Frage dazu noch...
Welche Einheit gibt QueryPerformanceCounter() denn zurück? Also bei mir kam dann als Ergebnis 24 raus... |
Re: QuickSort zu schnell für GetTickCount?
Den
![]() |
Re: QuickSort zu schnell für GetTickCount?
Zitat:
Ok, DANKE!^^ |
Re: QuickSort zu schnell für GetTickCount?
Irgendetwas scheint aber immernoch nicht zu stimmen....
Ist denn jetzt noch was falsch???
Delphi-Quellcode:
Ausgabe hat nun etwa den Wert 3973945 Sekunden bei mir :shock:
procedure THauptprogramm.bQuickSortClick(Sender: TObject);
var i : integer; start,stop,Ausgabe : Int64; begin QueryPerformanceCounter(Start); {GetTickCount ist nicht möglich, da QuickSort zu schnell ist} QuickSort(Feld,Low(Feld),High(Feld)); QueryPerformanceCounter(Stop); Ausgabe := (Stop-Start); QueryPerformanceFrequency(Ausgabe); for i := low(Feld) to high(Feld) do begin sgToSort.Cells[i,0] := IntToStr(Feld[i]); end; if cbBerechnung.Checked = True then MessageDlg('QuickSort benötigte: '+IntToStr(Ausgabe)+' Sekunden',mtInformation,[mbOk],0) else MessageDlg('Es wurde sortiert!',mtInformation,[mbOk],0); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz