Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 18.08.2010, 12:48 Titel: Zeigeber hoch frequenz... |
|
|
Wie kann man den unteren Zeitgeber von Windows aus der Dll nutzen für Freebasic?
Danke.
Gruss
Code: |
If QueryPerformanceFrequency_(@Frequency)
QueryPerformanceCounter_(@Time_1) ; Zeit vor der Routine
DoStuff()
QueryPerformanceCounter_(@Time_2) ; Zeit nach der Routine
Time.d = (Time_2 - Time_1) / Frequency * 1000 ; Umrechnung, *1000 Für Millisekunden
Debug StrD(Time, 2) + " ms"
Else
Debug "No high-resolution performance counter"
EndIf
|
|
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 18.08.2010, 13:55 Titel: |
|
|
Hi,
meinst du so etwa?
Code: | #Include Once "windows.bi"
Dim As ULongInt Frequency, Time_1, Time_2, PTime
If QueryPerformanceFrequency(Cast( PLARGE_INTEGER, @Frequency)) Then
QueryPerformanceCounter(Cast( PLARGE_INTEGER, @Time_1)) ' Zeit vor der Routine
Sleep 100 'Do Stuff()
QueryPerformanceCounter(Cast( PLARGE_INTEGER, @Time_2)) ' Zeit nach der Routine
PTime = (Time_2 - Time_1) / Frequency * 1000 ' *1000 Für Millisekunden
Print PTime ; " ms"
Else
Print "No high-resolution performance counter"
EndIf
Sleep |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 18.08.2010, 14:13 Titel: |
|
|
Jup, danke.
Damit kann man eine höchste Zeitmessung durchführen habe ich gelesen.
Warum nimmst du Integer und keine Real?
Gruss |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 19.08.2010, 11:15 Titel: |
|
|
Zitat: | Warum nimmst du Integer und keine Real? |
Die Funktionen (Zähler) arbeiten mit 64Bit Integer, das Ergebnis der Zeitberechnung könnte man z.B. als DOUBLE ausgeben.
Code: | #Include Once "windows.bi"
Dim As LARGE_INTEGER Frequency, Time_1, Time_2
Dim As Double PTime
If QueryPerformanceFrequency(@Frequency) Then
QueryPerformanceCounter(@Time_1) ' Startzeit
Sleep 200 '"Do Stuff()"
QueryPerformanceCounter(@Time_2) ' Endzeit
PTime = (Time_2.QuadPart - Time_1.QuadPart) * 1000 / Frequency.QuadPart
Print PTime ; " ms"
Else
Print "No high-resolution performance counter"
EndIf
Sleep |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
|