我试图了解使用 gcc 编译器在 Mac OS X 64 位环境中采样时间戳的最佳方法是什么。我阅读了 x86 架构中的 TSC 寄存器和英特尔处理器的 HPET,但我找不到使用它们的指南。实际上,我尝试了该功能gettimeofday()
,但我需要纳秒的精度。
谁能带领我?
在 OS X 上,您可以使用该mach_absolute_time
函数获取高精度时间戳:
#include <mach/mach_time.h>
#include <stdint.h>
/* get timer units */
mach_timebase_info_data_t info;
mach_timebase_info(&info);
/* get timer value */
uint64_t ts = mach_absolute_time();
/* convert to nanoseconds */
ts *= info.numer;
ts /= info.denom;
请注意,如果您尝试计时,您应该对时间戳之间的差异(持续时间)执行最终的纳秒转换,以避免溢出问题。