千家信息网

C++的优化有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"C++的优化有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++的优化有哪些"吧!1. 性能指标要靠测量,不能靠猜:我做过一
千家信息网最后更新 2026年11月02日C++的优化有哪些

这篇文章主要讲解了"C++的优化有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++的优化有哪些"吧!

1. 性能指标要靠测量,不能靠猜:

我做过一段时间的SDK开发工作,每当我们发版SDK时候,都要附带着SDK使用文档以及性能测试报告,性能测试报告里面有很详细的指标测试数据,这个数据当然不能是自己猜测出来的,一定要进行测试。

2. 帕累托法则

帕累托法则,也称二八原则,80%的执行时间花在大约20%代码身上,80%的内存被大约20%的代码使用,80%的维护成本花在20%的代码上面。我们做程序优化也是如此,多数情况下也许我们只需要找到那20%代码,对其进行深度优化,基本上就可以满足性能要求。

3. 阿姆达尔定律

SPRING

阿姆达尔定律:有一个公式,公式中:St表示优化后整体性能提升的比例,P表示被优化部分运行时间占总运行时间的比例,Sp表示被优化部分性能提升的比例。

举个例子:

1. 程序运行时间100s,其中有90s调用函数func,func优化后性能提升30%,即P=90/100=0.9,Sp=1+30%=1.3,则程序整体效率为St=1/((1-0.9)+0.9/1.3)=1.26214,程序整体性能提升了26%。

2. 程序运行时间100s,其中有10s调用函数func,func优化后性能提升80%,即P=10/100=0.1,Sp=1+80%=1.8,则程序整体效率为St=1/((1-0.1)+0.1/1.8)=1.04651,程序整体性能提升了4%。

该定律其实也间接验证了帕累托法则的正确性,去优化那些至关重要的部分吧。

聊完了性能优化的原则,再来说下我的优化系列规划吧,目前打算优化大体分为以下几个专题:

1. 测量分析专题:例如使用什么函数来测量函数耗时,使用什么代码分析工具来动态和静态的分析代码。例如:

2. 编码规范专题:分析C++各种操作的效率,包括不同类型变量的存储效率,使用智能指针、循环、函数参数、虚函数、数组等的效率,以及如何更好的利用他们进行代码优化。例如各个操作占用的时钟周期:

3. 编译优化专题:各种编译器性能分析,理解常见的编译优化选项,分析编译器是如何对代码进行优化的,都做了什么优化,以及编译器优化的障碍(它不能做什么),如何充分利用好编译器的优化选项。例如优化编译器优化级别介绍:

O0(默认选项):不开启优化,方便功能调试

Og:方便调试的优化选项(比O1更保守)

O1:保守的优化选项,打开了四十多个优化选项

Os:产生较小代码体积的优化选项(比O2更保守)

O2:常用的发布优化选项,在O1的基础上额外打开了四十多个优化选项,包括自动内联等规则

O3:较为激进的优化选项(对错误编码容忍度最低),在O2的基础上额外打开了十多个优化选项

Ofast:打开可导致不符合IEEE浮点数等标准的性能优化选项。

如图:

4. 内存优化专题:内存使用情况往往是影响程序性能的关键因素,该专题会介绍如何有效利用缓存,如何操作缓存,优化内存访问速度,如何使用更少的内存,如何防止内存抖动,内存对齐等等。

5. 多线程优化专题:如何充分利用CPU,如何做好线程同步,如何使用锁,使用什么锁,理解和调试上下文切换,如何使关键线程运行效率更高等等。

6. 乱序执行专题:理解CPU的乱序执行策略,如何利用此特性写出高效代码。

7. 矢量运算专题:理解CPU的矢量运算以及各种指令集、寄存器以及内置函数,提高数据计算的效率。

8. 特殊的优化编码技巧:这里会介绍很多高效的编码技巧,如何降低分支预测率,如何优化低效的除法操作,如何更好的进行数据边界检查,介绍一些高效的数学函数库等等。

9.模板元编程的编码技巧:如何利用模板编程来优化程序运行效率。

10.大杂烩:其它一些实用小技巧。

介绍到这里,向大家推荐个好用的网站链接,第一个是:https://godbolt.org/

点击查看高清图片

如图,输入C++代码,在右半部分会显示编译器编译后的汇编代码,通过查看高级语言背后的汇编指令我们可以更好的分析代码的性能。网站更强大的功能是它支持市面上几乎所有的编译器,而且各个版本都有。

如图,该网站右半部分会展示编译器眼中的代码,对于我们分析程序也有很大帮助。

感谢各位的阅读,以上就是"C++的优化有哪些"的内容了,经过本文的学习后,相信大家对C++的优化有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

性能 代码 编译 程序 专题 函数 效率 编译器 分析 内存 C++ 时间 运行 整体 编码 部分 技巧 数据 测试 多个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 互联网 科技创业 期待互联网科技 小马过河互联网科技 互联网科技logo设计 润盈互联网科技 齐家互联网科技有限公司 科技互联网创业计划书 深圳卡尔迅互联网科技有限公司怎么样 华脉科技工业互联网产品 云创客互联网科技公司 阿里巴巴算科技企业还是互联网 欧洲十大科技互联网公司 如何创新互联网科技 南通创西澳互联网科技有限公司 皮皮虾互联网科技有限公司 保山互联网科技靠谱吗 北京天晋互联网科技有限公司 山东蛋芒互联网科技有限公司 六子台科技互联网展会 撒么互联网科技公司 滨湖区互联网智能科技产品供应 互联网实体化科技化 互联网时代科技改变生活 工业互联网等科技实现智能化赋能 江苏互联网智能科技软件 富国互联网科技002692 安徽零酒互联网科技有限公司 数字科技和互联网金融哪个好 上海旺乐尼互联网科技有限公司
0