C++ 高精度计时: 使用 TSC 和 QueryPerformanceCounter 的最佳实践
您可以使用 Windows API 中的时间戳计数器(Timestamp Counter,TSC)来提高性能并保持精度。TSC 是一个 CPU 硬件计数器,可以在 CPU 周期级别上测量时间。您可以使用 __rdtsc() 函数来访问 TSC。__rdtsc() 函数返回一个 64 位整数,表示 CPU 时钟周期的数量。
请注意,使用 TSC 计算时间可能会受到多种因素的影响,例如 CPU 频率变化、CPU 核心切换和系统休眠等。因此,使用 TSC 计算时间需要谨慎,并且需要考虑这些因素的影响。
以下是一个示例代码片段,演示如何使用 TSC 计算时间:
#include <Windows.h>
int main()
{
LARGE_INTEGER frequency;
QueryPerformanceFrequency(&frequency); // 获取计时器的频率
unsigned __int64 tsc1 = __rdtsc(); // 记录 TSC
// 执行需要计时的代码块
unsigned __int64 tsc2 = __rdtsc(); // 记录 TSC
LARGE_INTEGER start, end;
QueryPerformanceCounter(&start); // 获取开始时间
// 执行需要计时的代码块
QueryPerformanceCounter(&end); // 获取结束时间
// 计算 TSC 时间
unsigned __int64 tscTime = tsc2 - tsc1;
// 计算 QueryPerformanceCounter 时间
double qpcTime = static_cast<double>(end.QuadPart - start.QuadPart) / frequency.QuadPart;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/njzk 著作权归作者所有。请勿转载和采集!