gpt4 book ai didi

performance - erlang vs jvm (scala) 递归性能

转载 作者:行者123 更新时间:2023-12-04 16:35:17 26 4
gpt4 key购买 nike

这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the help center .




9年前关闭。




作为学习scala和函数式编程的练习,我实现了以下计算pascal's number的非尾递归def。在任何位置。该程序本身用作帕斯卡三角形的定义。如下图所示

      1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
...

def pascal(c: Int, r: Int): Int =
if (c == 0 || c == r) 1 else pascal(c - 1, r - 1) + pascal(c, r - 1)

但是,当尝试运行 pascal(25,50) 时在 Mac OS X 10.6.8 (2.53 GHz Intel Core 2 Duo) 上,它在 之后仍未完成运行20 分钟 .

为了与erlang进行比较,我安装了R15B02并编写了如下等效程序:
-module(pascal).
-export([calc_pascal/2]).

calc_pascal(0,_) -> 1;
calc_pascal(C,R) when C==R -> 1;
calc_pascal(C,R) when C<R -> calc_pascal(C-1,R-1) + calc_pascal(C-1,R).
pascal:calc_pascal(25,50)完成于 ~4 秒 .

为什么可能是造成如此巨大性能差异的原因?对于递归程序,jvm 是否不如 erlang 运行时先进?

最佳答案

如果我在 Scala 程序中犯了你在 Erlang 版本中犯的同样错误,它运行得非常快。这可能是原因吗?

关于performance - erlang vs jvm (scala) 递归性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12552483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com