正在加载图片...
编译器能作什么 关键段 ■-O3终极优化 ca包括O2的所有优化 ■关键段( Time-Critical section): 循环展开:软件流水技术,通过展开循环来填满流 ca90%的CPU时间可能用在了10%的代码上,这 水线,循环次数要求在编译时确定 样的代码就是关键段 移动循环不变量 只有优化关键段才能有效地提高性能 把循环体内保持不变的变量移动到循环体外 mainline简单函数 对于对性能要求不高的应用,没有关键段 把简单的函数就地展开 O3会导致可执行程序体积急剧增大 20u7-1 拥试、性能和可扩展性 试.性能和可护展性 提高性能的四种策略 代码优化 ■收集公共表达式 ■使用更好的算法或数据结构(最重 ■用低代价操作代替高代价的 要) ■铺开或删除代码 ■让编译程序做优化(最easy) ■储存需多次使用的中间结果 ■优化关键段(最有效) ■用空间交换时间 ■不影响风格等前提下,调整其他代 ■使用近似值 在某个低级语言里重写代码 2007-1128 试、性能和可扩展性 2007-11-28 测试,性能和可扩展性 提高性能的十二条建议-1 提高性能的十二条建议-2 ■先设计好正确优秀的算法 a在你开始写代码,优化关键段之前,先用 ■使用 Release而不是 Debug模式编译代码 纸和笔把你想到的优化算法写出来,用逻 VC中,从菜单中选择 辑和数学的方法验证它的正确性,也可以 Build->Set Active Configuration 在弹出的对话框中选择Wn32 Release 想一些测试用例 Set Active Proect Configuration 0 在写优化代码的过程中,时时刻刻要注意 Project configurations 你的代码是否是完全按照你设计的算法来 工作的,如果不是,就回到纸和笔上重新 设计算法 ■在GCC编译时使用-○2选项2007-11-28 测试、性能和可扩展性 37 编译器能作什么 ƒ -O3终极优化 Z包括-O2的所有优化 Z循环展开:软件流水技术,通过展开循环来填满流 水线,循环次数要求在编译时确定 Z移动循环不变量: 把循环体内保持不变的变量移动到循环体外 Zinline简单函数: 把简单的函数就地展开 ƒ -O3会导致可执行程序体积急剧增大 2007-11-28 测试、性能和可扩展性 38 关键段 ƒ 关键段(Time-Critical Section): Z90%的CPU时间可能用在了10%的代码上,这 样的代码就是关键段 Z只有优化关键段才能有效地提高性能 Z对于对性能要求不高的应用,没有关键段 2007-11-28 测试、性能和可扩展性 39 提高性能的四种策略 ƒ 使用更好的算法或数据结构(最重 要) ƒ 让编译程序做优化(最easy) ƒ 优化关键段(最有效) ƒ 不影响风格等前提下,调整其他代 码 2007-11-28 测试、性能和可扩展性 40 代码优化 ƒ 收集公共表达式 ƒ 用低代价操作代替高代价的 ƒ 铺开或删除代码 ƒ 储存需多次使用的中间结果 ƒ 用空间交换时间 ƒ 使用近似值 ƒ 在某个低级语言里重写代码 提高性能的十二条建议-1 ƒ 先设计好正确优秀的算法 Z在你开始写代码,优化关键段之前,先用 纸和笔把你想到的优化算法写出来,用逻 辑和数学的方法验证它的正确性,也可以 想一些测试用例 Z在写优化代码的过程中,时时刻刻要注意 你的代码是否是完全按照你设计的算法来 工作的,如果不是,就回到纸和笔上重新 设计算法 提高性能的十二条建议-2 ƒ 使用Release而不是Debug模式编译代码 ZVC中,从菜单中选择 Build->Set Active Configuration… 在弹出的对话框中选择Win32 Release ƒ 在GCC编译时使用-O2选项
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有