C++中获取代码块的执行时间

简介

有一百种办法获取程序的执行时间,无非就是在目标代码块之前获取一次当前时间,在目标代码块之后获取一次,然后做一次时间差,然后再根据时间单位进行显示。虽然很多,但是总是忘,每次用的时候都要查下资料,所以这次记录下c++11标准实现的方法。废话不多说“野性”上代码.

头文件

#include <chrono>

实现代码

int main()
{
    ...
    auto t1 = std::chrono::steady_clock::now();    // 获取开始计算时间
    ...
    auto t2 = std::chrono::steady_clock::now();    // 获取结束计算时间

    double rs = std::chrono::duration<double>(t2 - t1).count();             // 计算时间差,默认秒为单位
    double rms = std::chrono::duration<double,std::micro>(t2 - t1).count(); // 计算时间差,根据模板参数,以微妙为单位。
    ...
}

补充:模板参数的时间单位枚举还有很多,用法都一样,具体还有哪些都长啥样,点进去一看便知。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
/***************************************************************** * Copyright (C) 2010 SDUST STUDIO 版权所有 * * 如果您在本代码的基础上进行改进或修改,请花费您宝贵的1分钟给作者发送一个附件,以进行交流,谢谢 * 欢迎与作者联系交流 * * 文件名称: .cs * 功能描述: * 作者: Leon * 创建时间: [10/29/2010 Leon] * 前景为白(1,或非零), 背景为黑(0); 仅对第一块连续的区域进行外边界标记, 有两种方式可以选择:短边界序列和完全边界序列 短边界是化简后的结果,标记了一些关键点,将这些关键点用直线连接,即得到边界线 目前完成的是8邻域,4邻域用到的情况较少,朋友们可以自己比照着8邻域来完成。 * 修改记录: * 修改人: *********************************************************************/ #include <QList> #include <QPoint> class CTrackBoundary { public: CTrackBoundary(void); ~CTrackBoundary(void); enum TrackType {Four, Eight}; // 4-邻域, 8-邻域 int row() { return m_Row; } int column(){ return m_Coulumn; } QList<QPoint> getBoundaryList() { return m_Boundary; } QList<QPoint> getShortBoundaryList() { processBoundary(); return m_ShortBoundary; } // 获取只有边界的矩阵 int** getBoundaryMatrix() { return m_isBoundary; } void setTrackType(TrackType tType) { m_Type = tType; } // 定义场景矩阵 void setMatrix(double**tMat, int iRowCount, int iColCount); void setMatrix(int iRowCount, int iColCount); void setMatrixItem(double value, int iRow, int iCol); // 执行搜边界 void action(); private: TrackType m_Type; int m_Row; int m_Coulumn; double** m_Mat; int** m_isBoundary; // 起点为6,终点8, 其余6 QList<QPoint> m_Boundary; QList<QPoint> m_ShortBoundary; int m_Four[4]; int m_Eight[8]; // 初始化矩阵 void initMatrix(); void clear(); // 计算邻域某序号对应的偏移 void Num2XY(const int tNumber, int& dX, int& dY); void XY2Num(int& tNumber, const int dX, const int dY); // 查找第一个点的 iRow 和 iCol bool findStart(int& iRow, int& iCol); // 看(iRow, iCol)点是否是边界 int checkBoundray(int iRow, int iCol); int findNextBoundray(const int iRow, const int iCol, const int iStart, int& nRow, int& nCol); int findNextBoundray_Four(const int iRow, const int iCol, const int iStart, int& nRow, int& nCol); int findNextBoundray_Eight(const int iRow, const int iCol, const int iStart, int& nRow, int& nCol); bool atEnd(int iRow, int iCol); // 化简边界 void processBoundary(); };
第1章 界面外观   实例1 带图标的菜单   实例2 显示倾斜文字   实例3 文字的颜色渐变   实例4 设置并叠加透明图片   实例5 颜色渐变进度条   实例6 透明窗体  第2章 界面与图像控制   实例7 调色程序   实例8 颜色下拉框   实例9 模拟拷贝进程   实例10 通用对话框   实例11 窗体分割   实例12 实现QQ程序的抽屉效果   实例13 以动画方式弹出/关闭窗口   实例14 半透明窗体   实例15 获得指定点颜色   实例16 判知图片的大小   实例17 图片的伸缩显示   实例18 游览大图   实例19 放大局部图形   实例20 屏幕抓图   实例21 裁剪位图   实例22 填充区域图像   实例23 列表项的提示条   实例24 浮动的鼠标提示   实例25 控制工具栏的按钮组   实例26 工具栏上设置下拉按钮   实例27 使窗体保持在最前   实例28 模仿Windows任务栏   实例29 定义光标热区   实例30 拖放选对象  第3章 多媒体控制   实例31 调节系统音量   实例32 控制混音效果   实例33 播放WAV文件   实例34 再现Windows的CD播放器   实例35 小解霸VCD典型控制   实例36 播放rm文件  第4章 时间控制   实例37 文字逐个出现模仿打字   实例38 嵌入式电子钟   实例39 程序嵌入日历   实例40 毫秒级的控制   实例41 读写系统时间   实例42 同步网络时间  第5章 操作系统与硬件   实例43 编写屏保程序   实例44 屏蔽系统热键和隐藏任务栏   实例45 动态调整屏幕分辨率   实例46 获取系统硬件信息   实例47 编辑注册表信息   实例48 重启动和关闭计算机   实例49 获取Windows版本号和运行模式   实例50 枚举可用字体  第6章 程序控制   实例51 向导程序   实例52 系统托盘程序   实例53 隐藏程序不被关闭程序发现   实例54 枚举系统正在运行的程序   实例55 启动并控制其他Exe程序   实例56 禁止运行程序多个实例   实例57 禁止窗体右上角各按钮   实例58 多线程方式同时进行多项任务   实例59 线程优先级示例——赛马   实例60 利用剪贴板实现Exe程序间的数据交换   实例61 通过内存映射实现Exe程序间的数据交换   实例62 通过消息机制实现Exe程序间的数据交换  第7章 磁盘文件   实例63 获取驱动器序列号   实例64 获取磁盘空间数据   实例65 判别并定位到光驱(软驱)   实例66 递归法遍历磁盘目录   实例67 获得文件属性   实例68 删除不为空的目录   实例69 快速检索指定文件   实例70 拷贝、删除和移动文件   实例71 读写INI文件   实例72 读写大块资料(二进制)文件   实例73 文件变更通知  第8章 数据库   实例74 格式化数字   实例75 文大写数字   实例76 存取图像字段   实例77 ADO控制Access数据库   实例78 SQL语句设置时段检索条件   实例79 SQL语句设置字符串检索条件   实例80 SQL语句设置多个字符串检索条件   实例81 SQL语句嵌套   实例82 代码控制链接ODBC  第9章 网络与通信   实例83 获取网卡地址   实例84 获得主机名和IP地址   实例85 端口扫描   实例86 判断网址是否有效   实例87 枚举局域网内计算机   实例88 连续批量Ping测试   实例89 设置IE的标题   实例90 收发送电子邮件   实例91 FTP上传下载   实例92 网络聊天:WINSOCK-TCP   实例93 广播信息:WINSOCK-UDP   实例94 电话拨号上网  第10章 数学算法   实例95 进制转换   实例96 随机选号   实例97 统计英文字符数  第11章 鼠标和键盘   实例98 鼠标位置追踪   实例99 代码控制光标   实例100 模拟鼠标的单双击   实例101 模拟键盘输入   实例102 限定鼠标区域   实例103 截获鼠标移开事件   实例104 截获键盘信息  第12章 程序发布   实例105 产生程序序列号   实例106 建立一个快捷方式   实例107 设置程序为自动被执行   实例108 注册与卸载OCX   实例109 限定程序的使用时限   实例110 在IE工具栏加入快捷图标

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_虚竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值