C++程序性能优化指南

Posted 吴尼玛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++程序性能优化指南相关的知识,希望对你有一定的参考价值。

原则

  • 《More Effective C++》书中效率部分第一条就是80—20准则。说得是——大约 20%的代码使用了 80%的程序资源;大约 20%的代码耗用了大约 80%的运行时间;大约 20%的代码使用了 80%的内存。因此,一些简单的优化也能显著提高程序性能。
  • 先完成程序功能,再考虑性能优化的事,否则会出现代码可读性差,过度抽象等问题。
  • 大部分的性能优化其实都是在做时间和空间的权衡,空间换时间,或者时间换空间。
  • 良好的代码风格和代码规范能有效的避免性能问题的出现,所以codereview也很重要。
  • 我们真正想大幅度的提升程序性能需要借助程序分析器(profiler)寻找出程序的性能瓶颈,针对这个瓶颈进行代码层面,算法层面,架构层面等多方面的优化。

常用优化方法

  • 空间足够时,可以将经常需要读取的资源,缓存在内存中。
  • 尽量减少大内存对象的构造与析构,考虑缓存暂时不用的对象,等待后续继续使用。
  • 尽量使用C++11的右值语义,减少临时对象的构造。
  • 简单的功能函数可以使用内联。少用继承,多用组合,尽量减少继承层级。
  • 在循环遍历时,优化判断条件,减少循环次数。
  • 优化线程或进程的同步方式,能用原子操作的就不用锁。能应用层同步的就不用内核对象同步。
  • 优化堆内存的使用,如果有内存频繁的申请与释放,可以考虑内存池。
  • 优化线程的使用,节省系统资源与切换造成的性能损耗,线程使用频繁的可以考虑线程池。
  • 尽量使用事件通知,谨慎使用轮循或者sleep函数。
  • 界面开发中,耗时的业务代码不要放在UI线程中执行,使用单独的线程去异步处理耗时业务,提高界面响应速度。
  • 经常重构、优化代码结构。优化算法或者架构,从设计层面进行性能的优化。

以上是关于C++程序性能优化指南的主要内容,如果未能解决你的问题,请参考以下文章

C++应用程序性能优化

Linux性能优化的全景指南

C++应用程序性能优化——应用程序性能优化简介

性能优化指南:性能优化的一般性原则与方法

C++应用程序性能优化——C++对象模型

「性能优化」Android性能优化学习(附360°性能调优学习指南)