一、先计算每秒多少个计数
typedef __int64 s64;
s64 tps; /* timestamp counter per second */
s64 get_tps(void)
{
s64 t0 = rdtsc();
Sleep(100);
return (rdtsc() - t0) * 10;
}
这段代码定义了一个函数 get_tps,该函数用于测量处理器的时间戳计数器(RDTSC)每秒的计数率。
具体来说:
rdtsc()是一个函数,通常在 x86 架构的处理器上使用,用于读取处理器的时间戳计数器。这个计数器通常每处理器周期增加一次,因此,通过读取这个计数器的值,我们可以得到处理器的运行速度的一个大致估计。get_tps函数首先读取时间戳计数器的当前值(t0)。- 然后,它使程序暂停(或“睡眠”)100毫秒。
- 之后,它再次读取时间戳计数器的值,并从第二次读取的值中减去第一次读取的值。
- 最后,它用所得的结果乘以10来计算在100毫秒内的时间戳计数器的计数。这个值乘以10是因为我们测量的是100毫秒内的计数,而我们需要的是每秒的计数率。
所以,这个函数返回的是处理器在100毫秒内的时钟周期数。这可以用来大致估计处理器的速度。例如,如果这个函数返回100000000,那么这意味着处理器在100毫秒内运行了大约10亿个时钟周期,或者说它每秒运行了大约10亿个时钟周期。
二、获取当前时间的总计数
typedef __int64 s64;
s64 rdtsc(void)
{
LARGE_INTEGER a;
QueryPerformanceCounter(&a);
return (s6
处理器时间戳计数器测量与WindowsAPI应用

文章介绍了如何使用RDTSC函数测量处理器时钟周期数以估算处理器速度,以及WindowsAPI的QueryPerformanceCounter函数获取当前时间戳计数器值。还展示了如何在实际代码中应用这些方法进行性能测试。
最低0.47元/天 解锁文章
992

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



