C++如何计算程序运行时间?(代码示例)


std::chrono是C++11起最推荐的计时方式,精度高、跨平台、类型安全;用high_resolution_clock测毫秒级耗时适合小段代码,可依需转微秒、纳秒或带小数的秒,注意避免clock()误用、编译器优化及单次测量干扰。

std::chrono 是 C++11 起最推荐的方式,精度高、跨平台、类型安全,比老式的 clock()time() 更可靠。

用 high_resolution_clock 测毫秒级耗时

适合测量小段代码(如算法执行、函数调用)的精确耗时:

#include 
#include 

int main() { auto start = std::chrono::high_resolution_clock::now();

// 你要测的代码,比如一个简单循环
volatile int sum = 0;  // volatile 防止被编译器优化掉
for (int i = 0; i < 1000000; ++i) {
    sum += i;
}

auto end = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast(end - start);

std::cout << "耗时: " << duration.count() << " 毫秒\n";
return 0;

}

测微秒或纳秒,只需换 duration_cast

根据需要调整时间单位,不改变计时逻辑:

  • 微秒std::chrono::duration_cast<:chrono::microseconds>(end - start)
  • 纳秒std::chrono::duration_cast<:chrono::nanoseconds>(end - start)
  • 秒(带小数)std::chrono::duration(end - start).count()

避免常见坑

几个容易出错但很关键的细节:

  • 别用 clock() 测 wall-clock 时间——它返回的是 CPU 时间,多线程下不准,且单位是 CLOCKS_PER_SEC,非秒
  • 别在 Release 模式下测空循环或无副作用代码——编译器可能直接优化掉,结果为 0
  • 单次测量易受干扰,要测得准可跑多次取平均,或用 std::chrono::steady_clock(更稳定,不随系统时间调整)
  • 如果测整个程序启动到结束,main() 开头记 start,结尾记 end 即可,无需额外线程

基本上就这些。用 chrono 三行搞定,清晰又靠谱。


# ai  # c++  # ios  # stream  # count  # double  # 循环  # 线程  # 多线程  # 算法  # 小段  # 的是  # 几个  # 你要  # 只需  # 精度高  # 或用  # 但很  # 不改变 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Win11怎么设置指纹解锁 Win11笔记本录入指纹登录【教程】  Win10如何备份注册表_Win10注册表备份步骤【攻略】  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  如何在 Go 中调用动态链接库(.so)中的函数  如何使用Golang实现函数指针_函数变量与回调示例  Windows怎样拦截WPS弹窗广告_Windows拦截WPS弹窗广告设置【步骤】  Python抽象类与接口设计_规范说明【指导】  Win11怎么关闭触控板_Win11笔记本禁用触摸板快捷键  如何在 PHP 单元测试中正确模拟带方法的图像处理门面(Facade)  如何测试您的网站全球打开速度-网站海外测速工  Win11如何设置ipv6 Win11开启IPv6网络协议教程【步骤】  MAC怎么使用表情符号面板_MAC Emoji快捷键调用与符号查找【方法】  如何使用Golang模拟请求超时_Golang context与HTTP请求测试实践  如何使用Golang包导出规则_控制函数和变量可见性  Win10怎么卸载爱奇艺_Win10彻底卸载爱奇艺方法【步骤】  Windows 11如何开启文件夹加密(EFS)_Windows 11文件属性中加密内容以保护数据  Mac怎么设置登录项_Mac管理开机自启动程序【教程】  Windows10蓝屏SYSTEM_SERVICE_EXCEPTION_Win10驱动冲突排查  如何正确访问 Laravel 模型或对象的属性而非调用不存在的方法  PythonFastAPI项目实战教程_API接口与异步处理实践  LINUX如何删除用户和用户组_Linux userdel和groupdel命令用法【系统管理】  Windows10电脑怎么设置虚拟内存_Win10高级系统设置性能  如何减少Golang内存碎片化_Golang内存分配与回收优化方法  Win11怎么开启游戏工具栏_Windows11 Xbox Game Bar快捷键  c++如何实现多态性_c++ 虚函数表原理与动态绑定机制【教程】  c# 在ASP.NET Core中管理和取消后台任务  php8.4xdebug无法调试怎么办_php8.4xdebug配置问题解决【解答】  MAC怎么一键隐藏桌面所有图标_MAC极简模式切换与终端指令【方法】  Win11怎么关闭粘滞键_彻底禁用Windows 11连按Shift粘滞键【步骤】  Ajax提交表单PHP怎么接收_处理Ajax发送的表单数据技巧【指南】  php嵌入式需要什么环境_搭建php+linux嵌入式开发环境【详解】  Python大文件处理策略_内存优化说明【指导】  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  PHP 中如何在函数内持久修改引用变量所指向的目标  如何使用Golang实现基本类型比较_Golang比较操作符使用方法  Win10系统怎么查看显卡温度_Win10任务管理器GPU温度  Win11怎么关闭触摸键盘图标_Windows11任务栏系统托盘设置  php和redis连接超时怎么办_phpredis调试连接问题汇总【指南】  mac怎么看硬盘大小_MAC查看磁盘存储空间与文件占用【详解】  php485返回数据不完整怎么办_php485数据分包重组处理方法【教程】  如何使用正则表达式提取以编号开头、后接多个注解的逻辑分组块  PHP主流架构如何做单元测试_工具与流程【详解】  Windows的便笺功能如何使用?(桌面备忘技巧)  如何在 Go 中正确反序列化多个同级 XML 元素(而非单个根节点)  如何使用Golang搭建本地API测试环境_快速验证接口功能  Win10任务栏天气和资讯怎么关闭 Win10禁用新闻和兴趣功能【教程】  Win11玩游戏全屏闪退怎么办_Win11全屏优化禁用设置【教程】  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  如何在Golang中引入测试模块_Golang测试包导入与使用实践  Win11怎样安装搜狗输入法_Win11安装搜狗输入法教程【步骤】 

 2025-12-29

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.