windows上如何写时间戳,获取当前时间

在Windows平台上,获取高精度的时间戳并计算时间差通常可以使用QueryPerformanceCounter和QueryPerformanceFrequency函数。这两个函数提供了高精度的时间测量功能,适用于需要精确时间测量的场景。

下面是一个C++示例,展示如何在一个函数中封装时间测量逻辑,以便获取某个函数执行前后的时间戳,并计算它们之间的时间差(以毫秒为单位):


#include <iostream>
#include <windows.h>

// 函数原型声明
void FunctionToBeMeasured();

// 封装时间测量的函数
double MeasureFunctionDuration(void (*func)()) {
    LARGE_INTEGER startCount, endCount, freq;
    double durationInMilliseconds;

    // 获取高精度计数器的频率
    QueryPerformanceFrequency(&freq);

    // 获取开始时间
    QueryPerformanceCounter(&startCount);

    // 执行需要测量的函数
    func();

    // 获取结束时间
    QueryPerformanceCounter(&endCount);

    // 计算时间差(转换为毫秒)
    durationInMilliseconds = static_cast<double>(endCount.QuadPart - startCount.QuadPart) * 1000.0 / static_cast<double>(freq.QuadPart);

    return durationInMilliseconds;
}

// 需要被测量的函数示例
void FunctionToBeMeasured() {
    // 模拟一些操作,比如循环延时
    for (int i = 0; i < 1000000; ++i) {
        // 空操作,仅为了消耗时间
    }
}

int main() {
    // 调用封装的时间测量函数
    double duration = MeasureFunctionDuration(FunctionToBeMeasured);

    // 输出结果
    std::cout << "Function execution time: " << duration << " milliseconds." << std::endl;

    return 0;
}


在这个示例中,MeasureFunctionDuration函数接受一个函数指针func作为参数,该函数将被测量执行时间。在函数内部,首先使用QueryPerformanceFrequency获取高精度计数器的频率,然后使用QueryPerformanceCounter分别在函数执行前后获取时间戳。通过计算这两个时间戳的差值,并乘以1000后除以频率,得到以毫秒为单位的时间差。

注意,由于Windows系统的时间精度和处理器性能的不同,测量结果可能会有所不同。此外,这种方法仅适用于Windows平台,因为它依赖于Windows API。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值