我正在运行一个巨大的模拟/图形引擎。
有许多事件在飞过。
我想给它们加时间戳(自程序执行开始以毫秒为单位)。
我应该为此使用什么? [什么库?]
答案 0 :(得分:3)
由于Mac OS X是基于Unix的,请尝试gettimeofday()
。它将返回秒和微秒,直到系统时钟的分辨率。
#include <sys/types.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
答案 1 :(得分:2)
gettimeofday()将主要工作正常,但它会受到异常,例如当用户更改系统日期/时间时。一个更好的方法是:
#include <CoreServices/CoreServices.h>
unsigned long long GetTimeSinceBootInMilliseconds()
{
UnsignedWide uw = AbsoluteToNanoseconds(UpTime());
return ((((unsigned long long)uw.hi)<<32)|(uw.lo))/1000000;
}
请注意,此函数返回的值将是毫秒 - 自启动,因此如果您需要毫秒 - 自 - 程序 - 启动,请在程序启动时调用此方法一次,存储该值,并从以后的结果中减去该值