Ich arbeite an einer C++ Spiel/Simulation/Grafik-Anwendung unter Windows.
(edit start) Wenn es darauf ankommt, ich Visual Studio 2013 (edit Ende)Wie kann man die Zeit für einen großen Codeblock messen, außer wenn er an einem Haltepunkt angehalten wird?
-Setup bin mit: Ich Messe die Zeit von einem Bild zum nächsten mit Queryperformancecounter().
Schritte zum Reproduzieren: An einem Haltepunkt für einige Debuggen anhalten.
Aktuelle Unerwünschte Ergebnis: Wenn die Ausführung der Anwendung wird fortgesetzt, das nächste Mal Queryperformancecounter() aufgerufen wird, wird es einen Zeitwert zurück, die die ganze Zeit einschließt, wurde im Debugger angehalten verbrachte. Dies führt zu einer Rahmenzeitlänge, die ungewöhnlich groß ist.
Gewünschtes Ergebnis: QueryPerformanceCounter() gibt einen Zeitwert zurück, der nicht viel Zeit enthält, die ich an einem Haltepunkt zum Debuggen pausiert habe.
Wie kann ich das gewünschte Ergebnis erzielen?
1. Gibt es eine andere Funktion, die ich anstelle von QueryPerformanceCounter verwenden sollte?
2. Gibt es einige Einstellungen in einer IDE (z. B. Visual Studio), die geändert werden können?
3. Gibt es eine spezielle Möglichkeit, QueryPerformanceCounter oder andere Zeitfunktion zu verwenden?
4. usw.
Referenz Hinweise: Es ist eine etwas ähnliche Frage hier aufgeführt, aber es war nicht hilfreich für mich, eine Lösung zu identifizieren. Tracking Time Spent in Debugger
Haben Sie auf C 11 ++ zugreifen? Sie könnten die Dienstprogramme in verwenden, aber ich bin nicht sicher, ob es ordnungsgemäß funktioniert, wenn Sie einen Haltepunkt verwenden. –
DeiDei
messen Sie vor und nach der Haltepunktlinie. subtrahiere es von der Gesamtzeit. –
Ich hätte nur einen "Debug-Modus", wo der Code mit "langen Frames" (sagen wir mehr als 0,1 s oder 0,5 s) durch "denken, es ist ein normaler Wert" (z. B. 0,0167s [1/60s]). Auf diese Weise verhält sich Ihr debuggesierter Code ähnlich wie die tatsächliche Anwendung in Echtzeit. Unglücklicherweise wird Timing-abhängiger Code im Debugging IMMER unangenehm und komplex sein. (Ich würde dies basierend auf Debug/Release Build aktivieren/deaktivieren) –