开发程序的时候往往需要在程序中加入睡眠等待一段时间,或者写了一个函数,需要统计它的执行耗时。我们一般会使用usleep函数以及gettimeofday这两个C语言的API来完成,如果要使用纯的C++实现,则可以使用std::this_thread::sleep_for函数以及chrono库中提供的时间管理接口实现。
- 程序睡眠
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
这里的std::chrono::milliseconds是一个方便的定义睡眠时间的类型,其他类型还有:
std::chrono::nanoseconds
std::chrono::microseconds
std::chrono::milliseconds
std::chrono::seconds
std::chrono::minutes
std::chrono::hours
它们本质上都是std::chrono::duration类型的变量,关于std::chrono::duration的定义,请参考C++ Reference: https://en.cppreference.com/w/cpp/chrono/duration
- 统计时间
std::chrono::time_point<std::chrono::system_clock> start_time = std::chrono::system_clock::now();
execute_your_function();
std::chrono::time_point<std::chrono::system_clock> end_time = std::chrono::system_clock::now();
auto diff = end_time - start_time;
这里的diff实则也是一个std::chrono::duration变量,默认单位是ns,所以如果想要以其他单位进行输出打印的话,需要使用duration_cast进行转换,如下所示:
std::chrono::milliseconds diff = std::chrono::duration_cast<std::chrono::milliseconds>(end_time – start_time);
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...