当前位置: 首页 > news >正文

[C++] 统计程序耗时

一、简介

本文介绍了两种在C++代码中统计耗时的方法,第一种使用<time.h>头文件中的clock()函数记录时间戳,统计程序耗时。第二种使用<chrono>头文件中的std::chrono::high_resolution_clock()::now()函数,后者可以方便地统计不同时间单位下的程序耗时,例如秒(s)、毫秒(ms)、微秒(μs)或者纳秒(ns)。

二、代码示例

1. 使用<time.h>头文件中的clock()函数统计耗时

#include <iostream>
#include <time.h>
#include <math.h>
int main(int, char **)
{clock_t start;clock_t finish;start = clock(); // 开始计时/* do some thing */for (int i = 0; i < 10000; i++){float c = exp(2.0);}finish = clock(); // 结束计时// 打印程序耗时,单位:秒sstd::cout << (double)(finish - start) / CLOCKS_PER_SEC << std::endl;
}

2. 使用 <chrono>头文件中的std::chrono::high_resolution_clock::now()函数统计耗时

#include <iostream>
#include <math.h>
#include <chrono>int main(int, char **)
{std::chrono::high_resolution_clock::time_point start;std::chrono::high_resolution_clock::time_point finish;start = std::chrono::high_resolution_clock::now(); // 开始计时// do some thingfor (int i = 0; i < 10000; i++){float c = exp(2.0);}finish = std::chrono::high_resolution_clock::now(); // 结束计时// 打印程序耗时std::cout << "耗时为:" << std::chrono::duration_cast<std::chrono::seconds>(finish - start).count() << "s.\n";std::cout << "耗时为:" << std::chrono::duration_cast<std::chrono::milliseconds>(finish - start).count() << "ms.\n";std::cout << "耗时为:" << std::chrono::duration_cast<std::chrono::microseconds>(finish - start).count() << "us.\n";std::cout << "耗时为:" << std::chrono::duration_cast<std::chrono::nanoseconds>(finish - start).count() << "ns.\n";return 0;
}

三、参考

[1].C++函数耗时计算

相关文章:

  • [二分+差分]AcWing 503 / NOIP2012提高组《借教室》
  • YOLOv9有效提点|加入SGE、Ge、Global Context、GAM等几十种注意力机制(四)
  • STM32单片机示例:ETH_DP83848_DHCP_NonOS_Poll_F407
  • 11:日志分析系统ELK|Elasticsearch|kibana
  • Ubuntu将c++编译成.so文件并测试
  • 【程序员养生延寿系列-万人关注的养生指南 4 】
  • 电子电气架构——AUTOSAR架构下EcuM唤醒源事件详解
  • Android在后台读取UVC摄像头的帧数据流并推送
  • 齐天大圣的生活
  • 虚拟化介绍
  • 在Pycharm中运行Django项目如何指定运行的端口
  • Java中的图数据库应用:Neo4j入门
  • 【MySQL】MySQL复合查询--多表查询自连接子查询 - 副本
  • 多益网络这种公司你还敢来吗?
  • selenium中webdriver常用的ChromeOptions参数
  • 07.Android之多媒体问题
  • 10个确保微服务与容器安全的最佳实践
  • 2017年终总结、随想
  • Logstash 参考指南(目录)
  • Markdown 语法简单说明
  • MaxCompute访问TableStore(OTS) 数据
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Redis中的lru算法实现
  • SpingCloudBus整合RabbitMQ
  • SQLServer之创建数据库快照
  • Unix命令
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 前端之React实战:创建跨平台的项目架构
  • 驱动程序原理
  • 微信开源mars源码分析1—上层samples分析
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (12)目标检测_SSD基于pytorch搭建代码
  • (zt)最盛行的警世狂言(爆笑)
  • (编译到47%失败)to be deleted
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (篇九)MySQL常用内置函数
  • (三分钟)速览传统边缘检测算子
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (五)Python 垃圾回收机制
  • (一)基于IDEA的JAVA基础12
  • (转)关于多人操作数据的处理策略
  • .Net CF下精确的计时器
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 服务 ServiceController
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • @synthesize和@dynamic分别有什么作用?
  • [android] 天气app布局练习
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [C/C++随笔] char与unsigned char区别
  • [C++] 多线程编程-thread::yield()-sleep_for()