C++ | 计时

Posted 从0到1的点云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ | 计时相关的知识,希望对你有一定的参考价值。


本篇是基于上述文章的延伸。

当我们求解函数调用过程中的时间,每次都要重新写,为了简化代码,我们设计成类,思路来源自cherno的c++视频


设计timer类如下:

#pragma once#include <iostream>#include <thread>#include <chrono>#include <string>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; }};


主文件

#include "lh_time.h"//timer类所在文件#include <iostream>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应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段

这些 C++ 代码片段有啥作用?

有趣的 C++ 代码片段,有啥解释吗? [复制]

以下代码片段 C++ 的说明

C++ 代码片段执行

此 Canon SDK C++ 代码片段的等效 C# 代码是啥?