![]() |
TrinityCore
|
Accurately measure durations and framerates. More...
#include <Stopwatch.h>
Public Member Functions | |
Stopwatch (const std::string &name="Stopwatch") | |
void | setEnabled (bool e) |
bool | enabled () const |
double | FPS () const |
RealTime | elapsedTime () const |
RealTime | smoothElapsedTime () const |
double | smoothFPS () const |
uint64 | elapsedCycles () const |
void | tick () |
void | tock () |
void | reset () |
void | after (const std::string &s="") |
Private Member Functions | |
void | computeOverhead () |
Private Attributes | |
std::string | myName |
bool | m_enabled |
double | startTime |
std::string | prevMark |
double | prevTime |
bool | inBetween |
uint64 | cycleStart |
RealTime | timeStart |
RealTime | lastTockTime |
RealTime | lastDuration |
int64 | lastCycleCount |
double | m_fps |
double | emwaFPS |
double | m_smoothFPS |
RealTime | emwaDuration |
int64 | cycleOverhead |
Accurately measure durations and framerates.
Example 1: For profiling code in the context of a rendering loop:
sw.tick(); ...timed code... sw.tock();
screenPrintf("%f\n", sw.smoothFPS());
Example 2: For profiling pieces of a sequence:
Stopwatch sw; slowOperation(); sw.after("slowOperation"); kdTree.balance(); sw.after("Balance tree");
G3D::Stopwatch::Stopwatch | ( | const std::string & | name = "Stopwatch" | ) |
void G3D::Stopwatch::after | ( | const std::string & | s = "" | ) |
Call after an operation has completed, with the name of the operation, to print a debug message listing the time since the previous after() call.
Does nothing if the stopwatch is disabled.
|
private |
Called from the constructor.
|
inline |
The elapsed cycle time between tick and tock. An attempt is made to factor out all tick/tock overhead, so that back-to-back calls should return zero. Unreliable on non-x86 platforms.
|
inline |
Amount of time between the most recent tick and tock calls. 0 if tick has never been called.
|
inline |
A stopwatch only prints output when enabled
|
inline |
Returns the number of times that tick was called per wall-clock second; e.g. frames-per-second.
void G3D::Stopwatch::reset | ( | ) |
Reset the start time used by after() and the emwa value.
|
inline |
|
inline |
Time-smoothed value that is stable to the nearest 1%. This is useful if you are displaying elapsed time in real-time and want a stable number.
|
inline |
Time-smoothed value of fps that is stable to the nearest integer for fps > 10 and to the first decimal place for fps <= 10. This is useful if you are displaying the frame rate in real-time and want a stable (readable) number.
void G3D::Stopwatch::tick | ( | ) |
Call at the beginning of the period that you want timed.
void G3D::Stopwatch::tock | ( | ) |
Call at the end of the period that you want timed.
|
private |
The overhead for calling into the class.
|
private |
The initial cycle count.
|
private |
Weighted duration
|
private |
Weighted fps
|
private |
True between tick and tock
|
private |
|
private |
|
private |
The time at which the previous tock was called, -1 if never.
|
private |
|
private |
Frames per second.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
The time at which tick was called.