相关疑难解决方法(0)

与Project Euler的速度比较:C vs Python vs Erlang vs Haskell

我已经采取了问题#12项目欧拉作为编程练习和我的(肯定不是最优的)实现在C,Python和Erlang和Haskell的比较.为了获得更高的执行时间,我搜索第一个三角形数字,其中有超过1000个除数而不是原始问题中所述的500.

结果如下:

C:

lorenzo@enzo:~/erlang$ gcc -lm -o euler12.bin euler12.c
lorenzo@enzo:~/erlang$ time ./euler12.bin
842161320

real    0m11.074s
user    0m11.070s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

lorenzo@enzo:~/erlang$ time ./euler12.py 
842161320

real    1m16.632s
user    1m16.370s
sys 0m0.250s
Run Code Online (Sandbox Code Playgroud)

Python与PyPy:

lorenzo@enzo:~/Downloads/pypy-c-jit-43780-b590cf6de419-linux64/bin$ time ./pypy /home/lorenzo/erlang/euler12.py 
842161320

real    0m13.082s
user    0m13.050s
sys 0m0.020s
Run Code Online (Sandbox Code Playgroud)

二郎:

lorenzo@enzo:~/erlang$ erlc euler12.erl 
lorenzo@enzo:~/erlang$ time erl -s euler12 solve
Erlang R13B03 (erts-5.7.4) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G)
1> 842161320

real    0m48.259s
user    0m48.070s
sys 0m0.020s
Run Code Online (Sandbox Code Playgroud)

哈斯克尔: …

c python erlang performance haskell

645
推荐指数
14
解决办法
13万
查看次数

与C的Fibonacci序列相比,为什么Haskell如此缓慢?

我只是Haskell的初学者.我编写了一个代码来显示Fibonacci序列中的N个数字.这是我在Haskell中的代码,

fib_seq 1 = 1:[]
fib_seq 2 = 1:1:[]
fib_seq n = sum(take 2 (fib_seq (n-1))):fib_seq (n-1)
Run Code Online (Sandbox Code Playgroud)

当我fib_seq 40在GHCI中运行此代码以获得更高的数字时,需要花费很长时间来评估它并且我的计算机挂起并且我必须中断.但是,当我在C中写出相同的逻辑时,(我只是打印而不是将其保存在列表中),

#include<stdio.h>

int fib_seq (int n){
    if(n==1)        return 1;
    else if(n==2)   return 1;
    else            return fib_seq(n-1)+fib_seq(n-2);   }


void print_fib(int n){
    if(n==0)    return;
    else        printf("%i ", fib_seq(n));
                print_fib(n-1);     }

int main(int argn, char* argc){
    print_fib(40);
    return 0;     }
Run Code Online (Sandbox Code Playgroud)

代码非常快.使用GCC编译时运行大约需要1秒.Haskell应该比C慢吗?我在互联网上查找了其他答案,他们说了一些关于memoization的内容.我开始Haskell,我不知道这意味着什么.我所说的是我编写的C代码和Haskell代码都执行相同的步骤,而Haskell比C慢得多,它挂起了我的GHCI.1-2秒的差异是我永远不会担心的,如果C也花了与Haskell相同的时间,我也不会担心.但Haskell崩溃和C在1秒内完成它是不可接受的.

c performance haskell fibonacci

-1
推荐指数
1
解决办法
1055
查看次数

标签 统计

c ×2

haskell ×2

performance ×2

erlang ×1

fibonacci ×1

python ×1