5.1 优化编译器的能力和局限性

5.2 表示程序性能

  • CPE(Cycles Per Element):每元素的周期数
  • 循环展开(loop unrolling) 举例:前置和,每次迭代计算两个元素

5.3 程序示例

5.4 消除循环的低效率

5.5 减少过程调用

5.6 消除不必要的内存引用

5.7 理解现代处理器

  • 延迟界限(latency bound):一系列操作必须按严格顺序执行.因为在下一条指令开始前,这条指令必须结束
  • 吞吐量界限(throughput bound):原始计算能力

5.7.1 整体操作

  • 指令控制单元(Instruction Control Unit,ICU):读指令并根据指令序列生成一组针对数据的基本操作
  • 执行单元(Execution Unit,EU):执行操作

5.7.2 功能单元的性能

5.7.3 处理器操作的抽象模型

5.8 循环展开

5.9 提高并行性

5.10 优化合并代码的结果小结

5.11 一些限制因素

5.12 理解内存性能

5.13 应用:性能提高技术

5.14 确认和消除性能瓶颈