2012-03-24 22:39:19 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
// http://linux.die.net/man/3/clock_gettime
|
|
|
|
|
|
|
|
// This time implementation caches the time for max performance (call time_now() as much as you like).
|
|
|
|
// You need to call time_update() once per frame (or whenever you need the correct time right now).
|
|
|
|
|
|
|
|
void time_update();
|
|
|
|
|
|
|
|
// Seconds.
|
|
|
|
double time_now_d();
|
|
|
|
|
2012-03-31 09:16:13 +00:00
|
|
|
// Uncached time. Slower than the above cached time functions. Does not update cached time, call time_update for that.
|
2012-03-24 22:39:19 +00:00
|
|
|
double real_time_now();
|
|
|
|
|
|
|
|
int time_now_ms();
|
|
|
|
|
2012-03-31 09:16:13 +00:00
|
|
|
|
|
|
|
// Sleep. Does not necessarily have millisecond granularity, especially on Windows.
|
2012-03-24 22:39:19 +00:00
|
|
|
void sleep_ms(int ms);
|
2013-01-10 22:47:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
// Can be sprinkled around the code to make sure that thing don't take
|
|
|
|
// unexpectedly long. What that means is up to you.
|
|
|
|
class LoggingDeadline {
|
|
|
|
public:
|
|
|
|
LoggingDeadline(const char *name, int deadline_in_ms);
|
|
|
|
~LoggingDeadline();
|
|
|
|
bool End();
|
|
|
|
|
|
|
|
private:
|
|
|
|
const char *name_;
|
|
|
|
bool endCalled_;
|
|
|
|
double totalTime_;
|
|
|
|
double endTime_;
|
|
|
|
};
|