c++程序性能优化.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++应用程序性能优化 PERFORMANCE OPTIMIZATION OF C++ APPLICATION [关键词] C++、应用程序、性能 [Key Words] C++、Application、performance 前言 在硬件资源昂贵的时代,编程人员非常注重程序的性能,以期望用尽可能少的硬件资源完成尽可能多的事情。随着科技的发展,摩尔定律的魔力使得硬件资源已越来越便宜,速度也越来越快,似乎性能已不是编程人员所需关注的事情了。然而在一个竞争与发展的时代,软件的功能越来越复杂,用户的操作体验越来越重要,而且竞争越来越激烈,谁能以更优势的价格,更好的操作体验,完成更多更复杂的事情,谁就将在激烈竞争中胜出。因而软件的性能优化必将一直是软件领域所要关注的内容之一。 虽然 软件的性能优化贯穿了设计与编码的整个过程,本文也将从设计与编码两个层次对性能优化进行分析。本文还将从CPU、内存、磁盘、网络四个方面描述性能问题分析的过程。 设计出来的性能 系统架构 控制流与数据流 减少不必要的模块 程序结构 多线程程序 锁的粒度、各种锁/信号量的性能对比 共享内存通信 降低灵活性以获取高性能。 减少不必要的重复判断(SHTTP/HTTP) 接口设计 好的接口给予使用者充分的灵活性 数据结构与算法 Linux内存管理,数量小时使用链表 编码的艺术 内存访问与文件 减少new/delete或malloc/free操作 减少换页 减少文件打开与关闭操作 减少文件读写次数(减少系统调用) 减少不必要的运算 消除重复运算 循环中的运算 最忙的循环放在里面 语言及库函数特性的利用 if与case语句 构造与析构 宏与内联函数 迟缓型计算 减少临时变量 缓存字符串的长度 不必要的memset 硬件特性的利用 字节对齐 移位与乘除2 性能热点用汇编实现 性能问题分析与相关工具使用 性能问题分析 性能问题通常体现在四个方面:CPU、内存、磁盘、网络几个方面。解决方法可以是修改代码甚至程序结构以更充分的利用现有资源,也可以是增加相应的硬件以增加资源供给。 相关工具点评 Quantify Quantify是一个专业的性能分析工具,它能对函数的调用次数、运行时间进行排序,并提供了很容易操作的界面,为性能优化时的首选工具。在Unix/Linux下,如果没有Quantify,还可以用tprof/gprof协助分析问题,可以起到类似的效果,只是由于是基于字符的程序,因而使用起来没有Quantify直观。 其它工具 像windows的任务管理器、性能监视器、Filemon等工具,HP-Unix 下的glance、HP-Unix/Linux下的top、AIX下的topas、以前Unix/Linux下的vmstat、sar、iostat等工具,熟练掌握的话将对性能问题的迅速分析定位与解决起到很好的辅助作用。 总结 本文列举了从设计到编码的一些规则与注意事项,希望能给C/C++程序开发者提供性能优化方面的参考。根据二八元则,80%的程序性能集中体现在20%的代码上,因而关键是要找出这20%的代码,并将其优化。(lzTODO名言) 程序的性能问题贯穿了从设计到编码的整个过程,前期20%的努力,将减少后期80%的工作,因而设计的初期完全不考虑性能问题也是不正确的。一个好的设计,将使得后面的代码优化涉及范围大大缩小,并且由于代码的低耦合性,改动代码造成的影响也大为减少,可以减少后期的性能优化投入。 “法无定法,然后知非法法也”,需要特别指出的是:性能优化应该针对程序的特性来进行。比如频繁启动型程序,如IE、Explorer等用户常用的界面程序,每天要重启成百上千次,这些程序则要关注启动时的性能,尽量地使程序初始化的工作减少;而对于服务器程序,启动后长期不重启,那么就要把耗时的操作尽量在初始化的时候完成,以提高后期提供服务时的响应速度。

文档评论(0)

zsmfjh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档