Python RVO

2017 年 12 月 19 日
 lniwn
import sys

sys.setrecursionlimit(100)
depth = 0

def main():
    global depth
    print(depth)
    depth += 1
    return main()

main()

经过测试发现,python 没有进行 rvo 优化,是我测试姿势问题,还是其他什么原因?望 dalao 指教。

3833 次点击
所在节点    Python
7 条回复
QAPTEAWH
2017 年 12 月 19 日
这个叫 TCO 吧
jotsai
2017 年 12 月 19 日
你想说尾递归优化吧,Python 没有
VicYu
2017 年 12 月 19 日
lniwn
2017 年 12 月 19 日
@QAPTEAWH Return Value Optimization,就是对这种最后一句是 return 的,不需要保留当前环境,就不用压栈了,但是实测还是压栈了,报 RecursionError 错误。
lniwn
2017 年 12 月 19 日
@jotsai 对,看来名字果然是记错了,RVO 是对返回值的拷贝构造函数进行优化的。。。
lniwn
2017 年 12 月 19 日
@VicYu 这样看来是动态语言多返回值的锅了?
lniwn
2017 年 12 月 19 日
@QAPTEAWH 是的,我记错了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/416003

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX