Linux中用户空间的高精度时序

现在,我试图确定一个方法来衡量一个特定的function将采取(像pthread_create)的时间。 当然,现在这些types的function是非常优化的,可以尽可能缩短时间。 实际上这么小,我的计时器在用户空间使用gettimeofday(以毫秒为单位进行测量)是无法充分测量任何东西的。

通常情况下,如果我能弄乱内核,我会使用类似get_cycles的东西来衡量性能指标的周期数。 但是,我还没有find一种方法来在用户空间中做到这一点。 有没有办法使用get_cycles(或等价的)或其他更高精度的计时器,我可以在用户空间中使用来测量极其快速的function?

Solutions Collecting From Web of "Linux中用户空间的高精度时序"

clock_gettime允许您从线程启动,进程启动或时代获得纳秒级的精确时间。

使用RDTSC(如果你在x86上)或clock_gettime

 unsigned long long cycleCount() { asm ("rdtsc"); } 

你有没有试过花时间来执行你的函数,比如说,10000次,并采取意思? 这将节省寻找更准确的定时功能的麻烦。

话虽如此,答案是 : gettimeofday()保证是微秒的分辨率? 似乎表明比gettimeofday()更好的函数使用。

我的Linux手册页告诉我

遵守

SVr4,4.3BSD。 POSIX.1-2001描述了gettimeofday()而不是settimeofday()。 POSIX.1-2008将gettimeofday()标记为废弃,推荐使用clock_gettime(2)。