性能测试的时候,一个问题就是时间间隔,有很多时间函数能获取时间,从而求取时间间隔。关于这方面的文章很多,我就不重复了,这里只是提供一些基本的信息,从而方便我自己做性能测试使用:
(1)C语言时间函数clock()和clock_t:
time.h中的C语言时间函数clock()能获取当前时间。需要注意的是,这个函数在Windows和Linux下是通用的,但是其返回值的单位是不同的,一个是毫秒,一个是微秒。
从单位也可以看出该方式获取时间的精度。总体来说,其精度在毫秒级,所以测试性能的时候,对于粗时间间隔的测试,用这个函数就足够了。
需要注意的是:在Linux上,clock()获取的是CPU时间,不是wall-clock时间,所以如果使用了sleep()等函数,那么是不会计算在内的。但是在Windows平台上,clock()获取的时间包括Sleep()等函数的时间,所以使用clock()的时候要注意这一点,在Linux上得到的很可能不是一个正确的Elapsed time。
(2)利用CPU获取高精度时间rdtsc寄存器
rdtsc是一个64位的寄存器,新的CPU都具备这个寄存器,用于记录从计算机启动开始CPU经过的时钟周期,可见其精度之高是和CPU的频率级别的。

本文介绍了在性能测试中获取时间间隔的几种方法,包括C语言的clock()函数、利用CPU的rdtsc寄存器以及Windows平台的QueryPerformanceCounter。在不同平台和编译环境下,这些方法的精度和使用注意事项各有不同。例如,clock()在Linux上返回CPU时间,而在Windows上包括Sleep()的时间;rdtsc寄存器提供了高精度但需注意64位和32位的写法差异;Windows的QueryPerformanceCounter是推荐的高精度计时API。
最低0.47元/天 解锁文章
7824

被折叠的 条评论
为什么被折叠?



