C++ | 计时
Posted 从0到1的点云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ | 计时相关的知识,希望对你有一定的参考价值。
本篇是基于上述文章的延伸。
当我们求解函数调用过程中的时间,每次都要重新写,为了简化代码,我们设计成类,思路来源自cherno的c++视频
设计timer类如下:
class timer
{
public:
std::chrono::time_point<std::chrono::steady_clock> begin,end;
std::chrono::duration<float> duration;
std::string function_name;
timer(std::string name):function_name(name)
{
begin = std::chrono::high_resolution_clock::now();
}
~timer()
{
end= std::chrono::high_resolution_clock::now();
duration = end - begin;
std::cout << "函数"<< function_name << "消耗的时间是 " << duration.count()*1000.0f << " 毫秒!" << std::endl;
}
};
主文件
void work()
{
timer time("work");
int sum = 0;
for (int i=0; i < 100000; i++)
{
sum += 1;
}
}
int main()
{
work();
getchar();
}
解释:当进入任意有一个函数时,第一时间创建timer的实例,其构造函数被唤醒,记录下当前时间,当该实例走出该函数(在本例中是work函数)的作用域,析构函数被唤醒,记录下此时时间,并且求得时间差,输出时间到控制台。计算work函数运行时间。
这样,每当进入一个函数,第一时间最先创建一个timer的实例,函数结束,就会自动输出时间,极大地减少了计算时间的代码量,构思巧妙。
以上是关于C++ | 计时的主要内容,如果未能解决你的问题,请参考以下文章
JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段