如何在C程序中找到某一部分的执行时间?

16

我正在试图找到一种在C语言中获取代码执行时间的方法。我已经尝试了来自time.h的time()和clock(),但是time()返回秒数,clock()似乎给我毫秒(或百分之一秒)的精度,我需要更加精确的时间。是否有一种方法可以以至少微秒级别的精度抓取时间?

这只需要能够在Linux上编译即可。

11个回答

0

如果您正在开发x86或x64,为什么不使用时间戳计数器:RDTSC

相比于像time()或clock()这样的Ansi C函数,它将更加可靠,因为RDTSC是一个原子函数。使用C函数可能会引入问题,因为您无法保证它们执行的线程不会被切换,因此它们返回的值将不是您尝试测量的实际执行时间的准确描述。

使用RDTSC可以更好地衡量这一点。您需要将滴答计数转换回人类可读的时间H:M:S格式,这取决于处理器的时钟频率,但请在谷歌上搜索,我相信您会找到示例。

然而,即使使用RDTSC,您也将包括代码被切换执行的时间,虽然这比使用time()/clock()更好,但如果您需要精确的测量,您将不得不求助于分析器,该分析器将检测您的代码并考虑到由于上下文切换或其他原因导致您的代码实际上未执行的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接