尾调用优化目标性能/ CPU还是只能节省内存?

时间:2012-11-10 05:54:36

标签: optimization cpu complexity-theory tail-recursion tail-call-optimization

当代码被尾部调用优化时,它是否在性能/复杂性方面更优越,与非优化对应物相比消耗更少的CPU资源,还是仅节省内存而没有其他内容?

1 个答案:

答案 0 :(得分:3)

咨询特定的处理器规范可能是一个好主意,但从一般的角度来看,尾部调用消除可以提高性能,因为

  • 没有分配新的堆栈框架
  • 嵌套呼叫直接返回当前呼叫的呼叫者而不是当前呼叫,然后再返回原始呼叫者
  • 更少的内存分配意味着更好地使用CPU缓存
  • 更少的内存分配意味着更好地使用可能需要在堆栈太大时进行分页或加载的主内存

现代处理器可以减少这些操作带来的开销。