【发布时间】:2011-04-18 00:51:56
【问题描述】:
由于 PHP 对我来说更简单,我希望在其中对算法进行基准测试以获得乐趣,因此我选择了阶乘。
递归函数在我到80!的时候速度完全不如迭代法,然后逐渐暴涨,而迭代法有一条稳定的线,实际上是这样的(x = factorial, y = seconds ):
但是在 C/Java 中(我刚刚在其中实现了测试)显示相同的结果,彼此之间只有 1-5% 的折扣,几乎相同的速度。
在脚本语言中以这种方式对算法进行基准测试是没有用的吗?
编辑:对于 NullUserException:
function factrec($x) {
if($x <= 1) {
return $x;
} else {
return $x * factrec($x - 1);
}
}
【问题讨论】:
-
如果递归版本比迭代版本差很多,那么你就执行了阶乘错误。
-
@NullUserException:我编辑了我的帖子,向您展示了它的普通代码。我设置了输出缓冲 (ob_start()) 并在回显它的 10000000 个结果和迭代后刷新它。
-
如果我记得,PHP 中的递归非常慢,所以这可以解释这里的区别。
-
查看我对阶乘尾递归版本的回答
标签: php performance algorithm scripting-language