C++程序性能优化指南

原则

  • 《More Effective C++》书中效率部分第一条就是80—20准则。说得是——大约 20%的代码使用了 80%的程序资源;大约 20%的代码耗用了大约 80%的运行时间;大约 20%的代码使用了 80%的内存。因此,一些简单的优化也能显著提高程序性能。

  • 先完成程序功能,再考虑性能优化的事,否则会出现代码可读性差,过度抽象等问题。

  • 大部分的性能优化其实都是在做时间和空间的权衡,空间换时间,或者时间换空间。

  • 良好的代码风格和代码规范能有效的避免性能问题的出现,所以codereview也很重要。

  • 我们真正想大幅度的提升程序性能需要借助程序分析器(profiler)寻找出程序的性能瓶颈,针对这个瓶颈进行代码层面,算法层面,架构层面等多方面的优化。

常用优化方法

  • 空间足够时,可以将经常需要读取的资源,缓存在内存中。

  • 尽量减少大内存对象的构造与析构,考虑缓存暂时不用的对象,等待后续继续使用。

  • 尽量使用C++11的右值语义,减少临时对象的构造。

  • 简单的功能函数可以使用内联。少用继承,多用组合,尽量减少继承层级。

  • 在循环遍历时,优化判断条件,减少循环次数。

  • 优化线程或进程的同步方式,能用原子操作的就不用锁。能应用层同步的就不用内核对象同步。

  • 优化堆内存的使用,如果有内存频繁的申请与释放,可以考虑内存池。

  • 优化线程的使用,节省系统资源与切换造成的性能损耗,线程使用频繁的可以考虑线程池。

  • 尽量使用事件通知,谨慎使用轮循或者sleep函数。

  • 界面开发中,耗时的业务代码不要放在UI线程中执行,使用单独的线程去异步处理耗时业务,提高界面响应速度。

  • 经常重构、优化代码结构。优化算法或者架构,从设计层面进行性能的优化。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值