方法是在程序段两端分别获取当前时间,然后二者之差即为程序段的运行时间(不考虑程序段中线程被挂起等情况):
#include <chrono>
auto s = std::chrono::system_clock::now();
//work
auto e = std::chrono::system_clock::now();
std::chrono::duration<double> mid1 = e - s;
std::cout << mid1.count() << std::endl;//间隔时间(s)
通过封装,可以更简洁地计算程序段运行时间:
void comp_time(function<void()> fun) {
auto s = std::chrono::system_clock::now();
fun();
auto e = std::chrono::system_clock::now();
std::chrono::duration<double> mid1 = e - s;
std::cout << mid1.count() << std::endl;//间隔时间(s)
}
示例如下:
int main() {
comp_time([&] {
//work
});
}
即将待测程序段用一个返回类型为 void 且没有参数的 lambda 表达式封装起来,再作为参数传递给 comp_time 计算间隔时间。
文章介绍了如何利用C++的chrono库来精确测量程序段的运行时间。通过在代码开始和结束时获取系统时间并计算差值,可以得到程序执行的时间。此外,还展示了如何通过封装函数和使用lambda表达式使测量过程更加简洁。
1520

被折叠的 条评论
为什么被折叠?



