方法是在程序段两端分别获取当前时间,然后二者之差即为程序段的运行时间(不考虑程序段中线程被挂起等情况):
#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
计算间隔时间。