CSSAPP稀里糊涂的读书笔记(五)优化程序性能

本章主要探讨如何使用几种不同类型的程序优化技术,使程序运行的更快。

  1. 编写高效程序需要做到以下几点:第一,我们必须选择一组适当的算法和数据结构。第二,我们必须编写出编译器能够有效优化以转换成高效可执行代码的源代码。第三,针对处理运算量特别大的计算,将一个任务分成多个部分,这些部分可以在多核和多处理器的某种组合上并行地计算。
  2. 程序优化地第一步就是消除不必要地工作,让代码尽可能有效地执行所期望地任务。这包括消除不必要地函数调用、条件测试和内存引用。第二步,利用处理器提供地指令级并行能力,同时执行多条指令。
  3. 消除循环地低效率。避免在循环判断地时候调用函数,而是将该函数地结果赋给一个局部变量。这种优化称为代码移动。
    CSSAPP稀里糊涂的读书笔记(五)优化程序性能
  4. 减少过程调用。
  5. 消除不必要地内存引用。
    CSSAPP稀里糊涂的读书笔记(五)优化程序性能
  6. 通过理解现代处理器的性能和特点进行优化,不展开了。
  7. 循环展开。通过增加每次迭代计算的元素的数量,减少循环的迭代次数。
  8. 提高并行性。但是,如果我们的并行度p超过了可用的寄存器数量,那么编译器会诉诸溢出(spilling),将某些临时值存放到内存中,通常是在运行时堆栈上分配空间。此时效率可能变差。
  9. 理解内存的性能,了解加载和存储的性能及影响等。
  10. 优化程序性能的基本策略:
  • 高级设计。为遇到的问题选择适当的算法和数据结构。
  • 基本编码原则:消除连续的函数调用;消除不必要的内存引用。
  • 低级优化:展开循环,降低开销;提高指令级并行;用功能性风- 格重写条件操作,使得编译采用条件数据传送。