体系性能优化总结与思考-第一部门

打印 上一主题 下一主题

主题 1735|帖子 1735|积分 5205

1.C++代码优化策略总结


  • 编译器方面:用好的编译器并用好编译器(支持C++11的编译器,IntelC++(速度最快)
  • GNU的C++编译器GCC/G++(非常符合标准),Visual C++(性能折中),clang(最年轻Mac OS x)。
  • 算法方面:利用更好的算法。 
  • 数据结构优化:利用更好的数据结构(不同的数据结构在利用内存管理器的方式也有所不同)。
  • 利用更好的库(熟悉和把握标准C++模板库对于进行性能优化的开辟员是必须的技能,Boost Project 和 Google Code 公开了很多有用的库)。
  • 内存优化:淘汰内存分配和复制(淘汰对内存管理器的调用是一种非常有效的优化手段)。
  • 优化内存管理(内存管理器的调理,丰富的API)。
  • 移除计算(对于单条的C++语句进行优化)。
  • 多线程利用:进步并发性(多个处理惩罚核心执行指令)。
  • 优化锁的利用:淘汰锁的利用,淘汰锁的范围,利用细粒度的锁,采用无锁队列,原子锁或线程局部存储,锁数据而不是代码。
2.影响计算机优化的活动


  • 计算机的物理组本钱身对计算机性能的限定。
  • 计算机的主内存是比力慢的(通往主内存的接口是限定执行速度的瓶颈(冯*诺伊曼瓶颈),(摩尔定理)每年处理惩罚器的核心的数目都会增长,但是计算机的性能未必会进步,由于这些核心只是等待访问内存的机会(内存墙memory wall))。 
  • 计算机内存的访问方式(并非以字节为单位),某些内存访问会比其他的更慢(分为一级高速缓存(cache memory)、二级高速缓存、三级高速缓存、主内存、磁盘上的虚拟内存页)。
  • 内存的容量是有限的,每个程序都会与其他程序竞争计算机资源,计算比做决定快。 
  • 在处理惩罚器中,访问内存的性能开销远比其他操作的性能开销大,非对齐访问所需要的时间是全部字节都在同一字节中的两倍。 
  • 访问频繁利用的内存地点的速度比访问非频繁利用的地点快,访问相邻地点的内存的速度比访问相互远隔的地点的内存块。 
  • 访问线程间共享的数据比访问非共享的数据资源慢很多。当并发线程共享数据时,同步代码降低了并发量。 
  • 有些语句隐蔽了大量的计算,从语句的外表上看不出语句的性能开销会有多大。
3.性能测量


  • 90/10规则:一个程序会花费90%的运行时去执行10%的代码。
  • 只有正确且精确的测量才是准确的测量。 
  • 在Windows上,clock()函数提供了可靠的毫秒级的时钟计时功能。在Windows8和之后的版本中,GetSystemTimePreciseAsfileTime()提供了亚微秒的计时功能。
  • 计算一条C++语句对内存的读写次数,可以估算出一句C++ 语句的性能开销。
4.优化方法
(1)优化热门语句


  • 缓存循环结束条件值



  • 从循环中移除不变性代码



  • 从循环中移除无谓的函数调用



  • 从循环中移除隐含的函数调用

(2)淘汰函数调用开销
函数调用开销分析
尽管执行函数体的开销大概会非常大,但是调用函数的开销与调用大多数 C++ 语句的开销 一样,黑白常小的。不外,当函数被多次调用时,累积的开销大概会变得巨大,因此淘汰 这种开销非常紧张
函数调用流程
(1) 执行代码将一个栈帧推入到调用栈中来生存函数的参数和局部变量。
(2) 计算每个参数表达式并复制到栈帧中。
(3) 执行地点被复制到栈帧中并天生返回地点。
(4) 执行代码将执行地点更新为函数体的第一条语句(而不是函数调用后的下一条语句)。
(5) 执行函数体中的指令。
(6) 返回地点被从栈帧中复制到指令地点中,将控制权交给函数调用后的语句。
(7) 栈帧被从栈中弹出。
函数调用的根本开销

虚函数调用开销


(3)简短地声明内联函数
(4)在利用之前定义函数:当编译器编译对某个函数的调用时发现该函数已经被定义了,那么编译器能够自主选择内联这次函数调用
(5)移除未利用的多态性
(6)放弃不利用的接口
(7)用switch替代if-else if-else
(8)克制利用PIMPL惯用法,编译时间少,运行增长

(8)其他常用优化方法

4.多线程优化-未完待续



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表