写数据库作业,需要获取纳秒级别的时间,但一开始以为直接 chrono 或者 clock_gettime 就可以,但求出来但全部是微妙级别的时间,和纳秒差了 3 个数量级...
这玩意就,坑了我好久#ifdef __MACH__
#include
#include
#endif
inline long long now() {
timespec timestamp;
#ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time
clock_serv_t cclock;
mach_timespec_t mts;
host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
clock_get_time(cclock, &mts);
mach_port_deallocate(mach_task_self(), cclock);
timestamp.tv_sec = mts.tv_sec;
timestamp.tv_nsec = mts.tv_nsec;
#else
clock_gettime(CLOCK_REALTIME, ×tamp);
#endif
return (long long)timestamp.tv_sec * 1000000000LL + timestamp.tv_nsec;
}