【发布时间】:2011-01-31 05:35:22
【问题描述】:
最近我尝试用 GCC 编译类似这样的程序:
int f(int i){
if(i<0){ return 0;}
return f(i-1);
f(100000);
它运行得很好。当我检查堆栈帧时,编译器优化了程序以仅使用一帧,只需跳回函数的开头并仅将参数替换为 f。而且 - 编译器甚至没有在优化模式下运行。
现在,当我在 Python 中尝试同样的事情时 - 我遇到了最大递归墙(或者如果我将递归深度设置得太高,可能会导致堆栈溢出)。
像 python 这样的动态语言有没有办法利用这些很好的优化? 也许可以使用编译器而不是解释器来完成这项工作?
只是好奇!
【问题讨论】:
-
好问题。在将静态语言与动态语言进行比较时,我完全忘记了一些东西。
标签: python gcc compiler-construction