1

当代码进行尾调用优化时,它在性能/复杂性方面是否更优越,相对于未优化的代码消耗更少的 CPU 资源,还是仅节省内存而没有别的?

4

1 回答 1

3

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

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

但是,现代处理器可以减少由这些操作引起的开销。

于 2012-11-10T14:35:08.003 回答