std::chrono::high_resolution_clock::time_point 变量多次计算 运行时间怎么复位上次 记录值不影响下次
时间: 2023-08-04 21:04:04 浏览: 230
要复位上次记录值,你可以在每次计算前将之前记录的值清零。具体实现可以通过定义一个变量,用于记录上一次计算的时间点,然后在每次计算时,将当前时间点与上一次时间点相减,即可得到两次计算的时间差。
以下是一个示例代码:
```c++
#include <iostream>
#include <chrono>
int main() {
std::chrono::high_resolution_clock::time_point start_time, end_time;
double elapsed_time = 0.0;
for (int i = 0; i < 10; ++i) {
start_time = std::chrono::high_resolution_clock::now(); // 记录开始时间
// 执行计算操作
end_time = std::chrono::high_resolution_clock::now(); // 记录结束时间
elapsed_time += std::chrono::duration_cast<std::chrono::microseconds>(end_time - start_time).count(); // 计算时间差并累加
// 清空上一次记录的时间值
start_time = std::chrono::high_resolution_clock::time_point();
end_time = std::chrono::high_resolution_clock::time_point();
}
// 计算平均耗时
elapsed_time /= 10.0;
std::cout << "Average elapsed time: " << elapsed_time << " microseconds" << std::endl;
return 0;
}
```
在上述示例代码中,我们定义了一个 `elapsed_time` 变量,用于记录累计的时间差。在每次计算时,我们先记录当前时间点为开始时间,执行完计算操作后再记录当前时间点为结束时间。然后将两者相减,得到这次计算的时间差,并累加到 `elapsed_time` 变量中。最后再将 `elapsed_time` 变量除以计算次数,得到平均耗时。在每次计算之前,我们都将上一次记录的时间值清空,以确保不会影响下次计算。
阅读全文