C++提高运行效率的操作,性能优化

本文探讨了C++性能优化的各种策略,包括绑定CPU核以降低耦合,避免堆内存碎片,减少冗余计算,利用位运算替代乘除,开启编译优化,合理使用内联函数,以及优化内存管理和线程同步。建议使用原子操作代替锁,并提倡缓存常用资源,减少大对象构造析构,利用C++11右值语义,优化循环条件,以及异步处理耗时任务来提升程序效率。
摘要由CSDN通过智能技术生成

1.绑定CPU核.

为了尽可能地降低多线程间的耦合性以提高速度,我们让不同CPU核心执行不同的线程.

2.堆空间使用固定内存.

  1. 全局堆内存的分配和释放非常慢而且是不确定的。你不能确定内存管理需要消耗多长时间。
  2. 降低由堆内存碎片(对于执行关键操作的系统尤为重要)造成的内存分配失败的可能性.

3.去除冗余计算,提前计算.

4.位运算代替乘法和除法操作.

5.打开编译优化 .

6.内联函数

优势:
当函数体比较小的时候, 内联该函数可以令目标代码更加高效. 对于存取函数以及其它函数体比较短, 性能关键的函数, 鼓励使用内联.
弊端:
使用内联函数后虽然调用函数的开销降低了,但是有利必有弊,内联函数会导致主函数指令增多、函数体积增大等情况。
使用:
内联函数的定义必须放在头文件中, 编译器才能在调用点内联展开定义. 然而, 实现代码理论上应该放在 .cc 文件中, 我们不希望 .h 文件中有太多实现代码, 除非在可读性和性能上有明显优势.
结论: 一个较为合理的经验准则是, 不要内联超过 10 行的函数. 谨慎对待析构函数, 析构函数往往比其表面看起来要更长, 因为有隐含的成员和基类析构函数被调用.

7.使用原子操作,尽量不用锁.

性能优化 参考链接:https://segmentfault.com/a/1190000039136866

  1. 空间足够时,可以将经常需要读取的资源,缓存在内存中
  2. 尽量减少大内存对象的构造与析构,考虑缓存暂时不用的对象,等待后续继续使用。
  3. 尽量使用C++11的右值语义,减少临时对象的构造在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)
  4. 简单的功能函数可以使用内联。少用继承,多用组合,尽量减少继承层级。
  5. 在循环遍历时,优化判断条件,减少循环次数。
  6. 优化线程或进程的同步方式能用原子操作的就不用锁。能应用层同步的就不用内核对象同步。
  7. 优化堆内存的使用,如果有内存频繁的申请与释放,可以考虑内存池
  8. 优化线程的使用,节省系统资源与切换造成的性能损耗,线程使用频繁的可以考虑线程池
  9. 尽量使用事件通知,谨慎使用轮循或者sleep函数。
  10. 界面开发中,耗时的业务代码不要放在UI线程中执行,使用单独的线程去异步处理耗时业务,提高界面响应速度。
  11. 经常重构、优化代码结构。优化算法或者架构,从设计层面进行性能的优化。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值