看到yufeng转一德国人的帖子比较erlang +native编译的运算能力和C语言-O0(不优化)对比。遂亲自动手实验一下。结果如下:
代码:
https://github.com/hmisty/coding/blob/master/erlang/cpu_intensive.erl
https://github.com/hmisty/coding/blob/master/erlang/cpu_intensive.c
https://github.com/hmisty/coding/blob/master/erlang/Makefile
环境 EC2 micro instance
Fib erlang native code
8.17user 0.52system 0:08.56elapsed 101%CPU (0avgtext+0avgdata 30112maxresident)k
0inputs+0outputs (0major+3229minor)pagefaults 0swaps
Fib erlang normal code
195.52user 1.63system 3:19.14elapsed 98%CPU (0avgtext+0avgdata 29920maxresident)k
0inputs+0outputs (0major+3204minor)pagefaults 0swaps
Fib C w/out optimization
9.38user 0.00system 0:09.39elapsed 99%CPU (0avgtext+0avgdata 1456maxresident)k
0inputs+0outputs (0major+125minor)pagefaults 0swaps
Fib C w/ O2 optimization
5.02user 0.00system 0:05.02elapsed 99%CPU (0avgtext+0avgdata 1472maxresident)k
0inputs+0outputs (0major+125minor)pagefaults 0swaps
Fib C w/ O3 optimization
2.01user 0.00system 0:02.00elapsed 100%CPU (0avgtext+0avgdata 1472maxresident)k
0inputs+0outputs (0major+125minor)pagefaults 0swaps
结论:
erlang用+native开关编译确实效率足以与C语言-O0的运算效率媲美。
是不是erlang Map/Reduce直接用erlang写运算体也差不多啊?哈哈。