3

我试图了解使用 gcc 编译器在 Mac OS X 64 位环境中采样时间戳的最佳方法是什么。我阅读了 x86 架构中的 TSC 寄存器和英特尔处理器的 HPET,但我找不到使用它们的指南。实际上,我尝试了该功能gettimeofday(),但我需要纳秒的精度。

谁能带领我?

4

1 回答 1

4

在 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;

请注意,如果您尝试计时,您应该对时间戳之间的差异(持续时间)执行最终的纳秒转换,以避免溢出问题。

于 2012-10-25T02:22:43.360 回答