QueryPerformanceTimer gibt manchmal kleinere Werte zurück als zu einem früheren Zeitpunkt
-
Ein Oszilloskop?
Ne ehrlich, mit den API Funktionen kommst du da nicht weit. Ich wüsste zumindest nicht wie.Die einzig brauchbare Möglichkeit die ich kenne ist die zu messende Funktion in einen Loop zu packen damit die zu messende Zeitspanne grösser wird.
Was wieder zu anderen Problemen führen kann, z.B. dass der Compiler u.U. den ganzen Loop (oder auch nur Teile davon) wegoptimiert.
-
dEUs schrieb:
Was schlägst du als Alternative vor?
http://support.microsoft.com/?scid=kb;en-us;895980
!???????????
-
Jochen Kalmbach schrieb:
dEUs schrieb:
Was schlägst du als Alternative vor?
http://support.microsoft.com/?scid=kb;en-us;895980
!???????????
Was willst du mir damit sagen?
-
At the end of the line, add a space, and then type /usepmtimer.
-
laut hustbaer ist QueryPerformanceTimer generel unbrauchbar. Unabhängig davon. Daher habe ich nach einer Alternative gefragt...
-
performance counter braucht selber ne gewisse zeit, um befragt zu werden.
davon abgesehen, cool'n'quiet kannste auch kurzzeitig deaktivieren: suche nach CrystalCPUID. da kannst du eigene stufen einstellen oder manuell festdrehen.
-
AFAIK gibt es keine sinnvolle Alternative... mir ist zumindest keine bekannt die nicht noch mehr Probleme verursacht.
-
ok, danke.
-
Was ich vergessen hatte zu schreiben: ich habe auf Intel Plattformen (z.B. P4 mit Hyperthreading) schrottige Werte bekommen, also schrottig im Sinne von "relativ ungenau".
BTW: unbrauchbar würde ich nicht sagen, für Zeitspannen im Bereich 0,1ms oder so geht das schon gut, für Zeitspannen im einstelligen Microsekundenbereich dagegen weniger.
Ahja... was u.U. gehen könnte: direkt RDTSC verwenden und den Thread mittels Affinity auf einen Core festnageln. Hab' ich allerdings noch nie probiert.
-
ok, wir haben offensichtlich unterschiedliche Vorstellungen von "unbrauchbar"

Mir reicht schon 1ms Genauigkeit sehr gut aus.
-
Ah, ok.
Mir nicht
Ich würde QueryPerformanceCounter gerne verwenden um z.B. Aufrufe wie malloc zu timen (bzw. allgemein halt Profiling von recht "kurzen" Funktionen), und die brauchen ja gottseidank weit unter 1ms.EDIT: 1ms Genauigkeit: timeBeginPeriod(), timeGetTime(), timeEndPeriod().
