您可以使用 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;
}
C++ 高精度计时: 使用 TSC 和 QueryPerformanceCounter 的最佳实践

原文地址: https://www.cveoy.top/t/topic/njzk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录