c++如何计算时间精确到微秒
C++中可以使用
- 使用
库
可以使用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;
}
- 使用系统函数
在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;
}
注意:以上计算方法都只是估算时间,不保证绝对精确
原文地址: http://www.cveoy.top/t/topic/cTUj 著作权归作者所有。请勿转载和采集!