C++ 中可以使用 <chrono> 库来计算时间,也可以使用系统函数。

  1. 使用 <chrono>

可以使用 std::chrono::high_resolution_clock::now() 函数来获取当前时间,精确到纳秒级别,然后进行计算。

示例代码:

#include <chrono>
#include <iostream>

int main() {
    auto start = std::chrono::high_resolution_clock::now(); // 获取开始时间
    // 执行代码
    auto end = std::chrono::high_resolution_clock::now(); // 获取结束时间
    auto elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end - start); // 计算耗时,精确到微秒
    std::cout << 'Elapsed time: ' << elapsed.count() << ' microseconds.' << std::endl;
    return 0;
}
  1. 使用系统函数

在 Windows 中,可以使用 QueryPerformanceCounter 函数和 QueryPerformanceFrequency 函数来计算时间,精确到微秒级别。

示例代码:

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

int main() {
    LARGE_INTEGER freq;
    QueryPerformanceFrequency(&freq); // 获取频率
    LARGE_INTEGER start, end;
    QueryPerformanceCounter(&start); // 获取开始时间
    // 执行代码
    QueryPerformanceCounter(&end); // 获取结束时间
    double elapsed = static_cast<double>(end.QuadPart - start.QuadPart) * 1000000.0 / static_cast<double>(freq.QuadPart); // 计算耗时,精确到微秒
    std::cout << 'Elapsed time: ' << elapsed << ' microseconds.' << std::endl;
    return 0;
}

在 Linux 和 MacOS 中,可以使用 gettimeofday 函数来计算时间,精确到微秒级别。

示例代码:

#include <iostream>
#include <sys/time.h>

int main() {
    timeval start, end;
    gettimeofday(&start, nullptr); // 获取开始时间
    // 执行代码
    gettimeofday(&end, nullptr); // 获取结束时间
    long elapsed = (end.tv_sec - start.tv_sec) * 1000000L + (end.tv_usec - start.tv_usec); // 计算耗时,精确到微秒
    std::cout << 'Elapsed time: ' << elapsed << ' microseconds.' << std::endl;
    return 0;
}

注意:以上计算方法都只是估算时间,不保证绝对精确。

C++ 精确到微秒的时间计算方法

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

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