Chapter 13 总结 (Summary)

  1. 不应过早开始优化,应该关注瓶颈,而且应该从算法开始。
  2. 有五个不同的参数控制编译。它们可以在本地声明也可以在全局声明。
  3. 优秀的编译器能够优化尾递归,将一个尾递归的函数转换为一个循环。内联编译是另一种避免函数调用的方法。
  4. 类型声明并不是必须的,但它们可以让一个程序更高效。类型声明对于处理数值和数组的代码特别重要。
  5. 少的构造可以让程序更快,特别是在使用着原始的垃圾回收器的实现中。解决方案是使用破坏性函数、预先分配空间块、以及在栈上分配。
  6. 某些情况下,从预先分配的存储池中提取对象可能是有价值的。
  7. Common Lisp 的某些部分是为了速度而设计的,另一些则为了灵活性。
  8. 编程必定存在探索的过程。探索和优化应该被分开 ── 有时甚至需要使用不同的语言。