Lua、Luajit、Python、Node.js和Java性能测试对比

16-06-22 banq
         

这个Github项目提供了Lua、Luajit、Python、Node.js和Java等动态语言的性能测试,具体语言版本包括:

Lua 5.3.3

Luajit 2.0.4

Python 3.5.1

Pypy 2.4.0

HipHop VM 3.13.2

NodeJS v6.2.1

OpenJDK 1.8.0_92 (reference)

主要测试下面算法的性能:

二叉树

fannkuchredux

fasta

nbody

spectralnorm

测试结论如下:

1. Lua是非常快的解释语言,甚至快于一些JIT,它最大的缺点是当出现大量的(re)alocating(分配或再分配)时会出现性能下降,可见其二叉树算法测试。

2.Luajit非常疯狂的动态jit,非常闪耀的快速语言,但是当运行更长时间以后,它会被Java超越,也就是说,当分配了很多空间情况下,它的性能才非常好。

3.Python是最慢的解释语言,最坏情况是进行Fibonacci 程序运行时(Python不能做CPU密集型的任务)

4.Pypy是处于HHVM, Lua和 Python以及Node,Luajit,Java之间的语言,当需要许多分配时它会有很多问题。

5.HHVM有时确实超过Pypy-s性能,但是不总是,如同原生Python实现,它在递归计算会有严重问题。

6.Node.js是非常快的JIT,只会被LuaJit和Java打败,快于Pypy好几倍,当实现冒泡排序时特别优秀。

7.Java:当执行很短程序时会输给Luajit,但是执行超过几秒的较长程序时,会超过Luajit,变成最快的。

gareins/dynamic_benchmarks: Collection of benchmar