这个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,变成最快的。