2022年C++代码优化经验总结 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年C++代码优化经验总结 .pdf》由会员分享,可在线阅读,更多相关《2022年C++代码优化经验总结 .pdf(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+代码优化经验总结优化是一个非常大的主题,本文并不是去深入探讨性能分析理论,算法的效率,况且我也没有这个能力。我只是想把一些可以简单的应用到你的 C+代码中的优化技术总结在这里,这样,当你遇到几种不同的编程策略的时候,就可以对每种策略的性能进行一个大概的估计。这也是本文的目的之所在.目录:一.优化之前二.声明的放置三.内联函数四.优化你的内存使用五.速度优化六.最后的求助一.优化之前在进行优化之前,我们首先应该做的是发现我们代码的瓶颈(bottleneck)在哪里。然而当你做这件事情的时候切忌从一个debug-version进行推断,因为 debug-version中包含了许多额外的代码。一
2、个debug-version可执行体要比release-version大出 40%。那些额外的代码都是用来支持调试的,比如说符号的查找。大多数实现都为 debug-version和 rele ase-version提供了不同的operator new以及库函数。而且,一个release-version的执行体可能已经通过多种途径进行了优化,包括不必要的临时对象的消除,循环展开,把对象移入寄存器,内联等等。另外,我们要把调试和优化区分开来,它们是在完成不同的任务。debug-version 是用来追捕 bugs 以及检查程序是否有逻辑上的问题。release-version则是用来做一些性能上的
3、调整以及进行优化。下面就让我们来看看有哪些代码优化技术吧!文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ
4、5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W
5、7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ
6、5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W
7、7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ
8、5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W
9、7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8二.声明的放置程序中变量和对象的声明放在什么位置将会对性能产生显著影响。同样,对postfix和prefix运算符的选择也会影响性能。这一部分我们集中讨论四个问题:初始化 v.s 赋值,在程序确实要使用的地方放置声明,构造函数的初始化列表,prefix v.s postfix运算符。(1)请使用初始化
10、而不是赋值在 C语言中只允许在一个函数体的开头进行变量的声明,然而在 C+中声明可以出现在程序的任何位置。这样做的目的是希望把对象的声明拖延到确实要使用它的时候再进行。这样做可以有两个好处:1.确保了对象在它被使用前不会被程序的其他部分恶意修改。如果对象在开头就被声明然而却在20 行以后才被使用的话,就不能做这样的保证。2.使我们文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5
11、O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6
12、T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5
13、O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6
14、T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5
15、O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6
16、T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8有机会通过用初始化取代赋值来
17、达到性能的提升,从前声明只能放在开头,然而往往开始的时候我们还没有获得我们想要的值,因此初始化所带来的好处就无法被应用。但是现在我们可以在我们获得了想要的值的时候直接进行初始化,从而省去了一步。注意,或许对于基本类型来说,初始化和赋值之间可能不会有什么差异,但是对于用户定义的类型来说,二者就会带来显著的不同,因为赋值会多进行一次函数调用-operator=。因此当我们在赋值和初始化之间进行选择的话,初始化应该是我们的首选。(2)把声明放在合适的位置上在一些场合,通过移动声明到合适的位置所带来的性能提升应该引起我们足够的重视。例如:bool is_C_Needed();文档编码:CH7J8W7B
18、5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C
19、6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B
20、5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C
21、6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B
22、5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C
23、6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B
24、5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8void use()C c1;if(is_C_Needed()=false)return;/c1 was not needed /use c1 here return;上面这段代码中对象c1 即使在有可能不使用它的情况下也会被创建,这样我们就会为它付出不必要的花费,有可能你会说一个对象c1 能浪费多少时间,但是如果是这种情况呢:C c11000;我想就不是说浪费就浪费了。但是我们可以
25、通过移动声明c1 的位置来改变这种情文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档编码:CH7J8W7B5O2 HH5Y5D7E1Z7 ZQ5C6T3Z4E8文档
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C+代码优化经验总结 2022 C+ 代码 优化 经验总结
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内