- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CC程序性能改善
C/C++程序性能改善建议
变更履历
序号 版本 日期 作者 说明 V0.2 2005-03-08 贾书军 新规作成 V0.3 2005-03-23 贾书军 增加了6、Cache使用优化 V0.4 2005-03-25 贾书军 增加了7、代码并行处理优化 V0.5 2005-5-17 贾书军 重新整理文档结构,增加了Intel编译器等内容 V0.55 2005-5-20 贾书军 增加了Intel编译器的详细内容,并且增加了部分例程。
1 前言 5
2 性能改善步骤 7
3 优化 8
3.1 初级 8
3.1.1 变量和常量定义 8
3.1.1.1 变量 8
3.1.1.2 组合的基本类型 10
3.1.2 常用操作命令 11
3.1.2.1 算术运算的优化 11
3.1.2.2 数组查找 11
3.1.2.3 数组的使用 11
3.1.3 程序结构 12
3.1.3.1 顺序结构 12
3.1.3.2 分支结构优化 12
3.1.3.2.1 if…else 语句 12
3.1.3.2.2 转移表 14
3.1.3.2.3 switch语句 15
3.1.3.3 循环结构优化 17
3.1.4 函数调用优化 19
3.1.4.1 函数 19
3.1.4.2 类的成员函数 20
3.2 高级 21
3.2.1 代码优化 21
3.2.2 编译器优化方法 21
3.2.2.1 EVC中的MS SH4编译器 21
3.2.2.2 VC中的MS编译器 23
3.2.2.3 Windows下的Intel编译器 24
3.2.2.3.1 通常优化选项 24
3.2.2.3.2 CPU的优化选项 25
3.2.2.3.3 特定CPU的优化选项 25
3.2.2.3.4 自动特定CPU的优化选项 26
3.2.2.3.5 IPO优化 26
3.2.2.3.6 PGO优化 27
3.2.2.3.7 Vector优化 29
3.2.2.3.8 Auto并行优化 31
3.2.2.3.9 OpenMP* 并行处理 31
3.2.3 使用CPU相关函数 32
3.2.3.1 SH4 32
3.2.3.2 Intel CPU 33
3.2.3.2.1 VC中支持的特定的函数 33
3.2.3.2.2 Intel 编译器 35
3.2.3.2.2.1 通用intrinsic函数 35
3.2.3.2.2.2 特定的intrinsic函数 39
4 专题 40
4.1 内存优化(暂缺) 40
4.1.1 内存碎片 40
4.1.2 内存管理 40
4.1.3 调整数据结构的大小 40
4.2 Cache使用 41
4.2.1 Cache的工作原理 41
4.2.2 Cache与存储器存取的优化 42
4.2.2.1 处理数据的尺寸对性能的影响 42
4.2.2.2 可执行代码的尺寸对性能的影响 42
4.2.2.3 数据对齐效率 42
4.2.2.4 数据在Cache Bank上的分布 43
4.2.2.5 使用有限联合数目的Cache 43
4.2.2.6 二维数组的处理 44
4.2.2.7 写缓冲机制的详细说明 44
4.2.2.8 编译预取机制的优化 44
4.3 代码并行处理 50
4.3.1 基本概念: 50
4.3.2 支持指令级并行处理方法 51
4.3.2.1 开发指令级并行的基本技术 51
4.3.2.2 开发指令级并行的高级技术 53
4.4 I/O优化(暂缺) 55
5 附录 56
5.1 SH4简介 56
5.2 参考资料 56
前言
1.0 目的
本文为开发人员提供关于系统性能改善的指南。性能优化的工作实际上存在于编码过程中,在编码过程中多注意一些有关性能的问题,就可以很大的改善了程序的性能,而不是集中到项目的末期,由于性能问题而不能满足用户需求再作就比较被动了。本文既可以作为在编程过程中的参考资料,又可以在进行性能改善的时候的参考资料。
1.1 优化的好处
有什么样的目的就有什么样的手段去达到目标。这种理念决定了本文的叙述的方向。因此建议读者应将如下的一些建议用于后面的所用优化算法当中去。
优化应该尽可能保持与硬件无关,并且对于其他操作系统,是可移植的,而不需要另外的付出或者导致效率的大幅度降低。
优化不应该使开发过程(包括测试在内)的劳动强度增加15%以上。
优化算法应该使程序性能提高不少于20%
优化应该使代码修改起来毫不费力。
1.2 读者对象
3.1是针对初学者,基本上和特定
文档评论(0)