【发布时间】:2010-08-13 21:43:14
【问题描述】:
我是新来的,如果我以错误的方式发帖道歉。
我想知道是否有人可以解释为什么 C 函数调用这么慢?
对关于递归斐波那契的标准问题给出一个肤浅的答案很容易,但如果我尽可能深入地了解“更深层”的原因,我将不胜感激。
谢谢。
Edit1:很抱歉这个错误。我误解了 Wiki 中的一篇文章。
【问题讨论】:
-
您从哪里得知 C 执行函数调用很慢?
-
如果 C 语言的函数调用速度很慢,那么哪些语言的函数调用速度很快?
-
抱歉,我好像误会了什么。我只是想用 Fib 数字尽可能深入地解释整个故事。我在维基百科的递归文章中看到“在支持迭代循环结构的语言(例如 C 和 Java)中,由于管理堆栈所需的开销和相对缓慢,递归程序通常会花费大量的时间和空间成本函数调用;"。
-
这不是开始,但我们必须更深入。尽可能深...
-
我认为问题在于,与 C 相比,函数式语言编译器更擅长优化递归函数调用。C 就像任何语言一样,与特定编译器的程序集一样慢(或快)生成。由于函数调用非常特定于平台,因此您不能将函数调用的成本与语言联系起来。然而,函数调用的优化可以绑定到特定的编译器。