采样时间戳C.

时间:2012-10-25 02:13:37

标签: c macos gcc timestamp

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

有人能引导我吗?

1 个答案:

答案 0 :(得分: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;

请注意,如果您尝试计算某些内容,则应对时间戳(持续时间)之间的差异执行最后的纳秒转换,以避免出现溢出问题。