2012-12-25 14 views
6

Wie kann ich die Millisekunde zählen, die eine bestimmte Funktion (wiederholt aufgerufen) benötigt?
Ich dachte an:
CTime::GetCurrentTM() vor,
CTime::GetCurrentTM() nach,MFC Messfunktion in Millisekunden

Und dann das Ergebnis an CTimeSpan diff = after - before einzufügen.
Schließlich speichern Sie das diff zu globalen Mitglied, die alle Diffs summieren, da ich die Gesamtzeit wissen möchte, die diese Funktion verbracht hat.

aber es wird die Antwort in Sekunden und nicht Millisekunden geben.

Antwort

6

MFC ist C++, oder?

Wenn ja, können Sie einfach clock() verwenden.

#include <ctime> 

clock_t time1 = clock(); 
// do something heavy 
clock_t time2 = clock(); 
clock_t timediff = time2 - time1; 

float timediff_sec = ((float)timediff)/CLOCKS_PER_SEC; 

Dies wird normalerweise Millisekundengenauigkeit geben.

1

Wenn Sie MFC verwenden, ist die WIN API geeignet. Und da Sie sich nur Sorgen machen, den Zeitunterschied zu berechnen, könnte die folgende Funktion perfekt zu Ihnen passen.

GetTickCount64() 

gibt direkt die number of milli seconds that has elapsed zurück, seit das System gestartet wurde.

Wenn Sie nicht vorhaben, Ihr System zu halten lang (genau mehr als 49,7 Tage), wenig schnellere Version - GetTickCount() Funktion

+0

Weil es darauf basiert, wenn das System startet, scheint mir dieser Ansatz ein Problem: wenn ein Computer sehr selten neu startet: es kann den Zähler überlaufen! – sergiol

0

Die Coledatetime intern Arbeit basiert auf Millisekunden bekannt ist, weil es Zeitstempel speichert auf seiner m_dt-Variablen, die vom Typ DATE ist, also eine Auflösung für den beabsichtigten Zweck hat.

kann ich vorschlagen, dass Sie Ihre Zeit zur Basis auf

DATE now= (DATE) COleDateTime::GetCurrentTime(); 

und nach den jeweiligen Berechnungen.