javascript与python性能对⽐-lua与python性能测试⽐较
CLR/C#/Java/Python/IronPython/JavaScript/Lua/Ruby/Squirre l性能测试
今天蛋疼地看到⼀篇,考虑到已经是2年前的⽂章了,现在的编译器可能会进⼀步优化,所以⾃⾏测试了⼀遍。这是2007年,该⽂的作者拿到了最佳优化奖,但此处的代码并⾮最优化的,只是改进了乘⽅、⾃⼰实现随机数⽽已。(最优版本可参见和,感觉很变态…)其
中,C++和C++ CLR的代码相同,只是采⽤的编译指令不同⽽已。此外,C#代码从⼆维数组改为⼀维数组,我稍微测试了⼀下,C#⼆维数组和嵌套数组的速度确实很慢。原作者的代码似乎还把下标弄错了,所以也改了下。⽽Python、Cython、JavaScript和Lua的代码是我⾃⼰照英特尔的原程序改编的,没有对随机数进⾏优化,附在⽂末。Squirrel的代码由dwing提供,我只是将table改成了数
组,RAND_MAX + 1.0改成了32768.0的常数,时间快了约5秒左右。测试平台:CPU:Intel Core2 Duo T9400 @ 2.53GHz内存:3 GB操作系统:Windows XP Pro SP2英⽂版C++编译器:gcc version 4.4.1 (TDM-2 mingw32)(以下简称G++)、Microsoft (R)
32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86(以下简称VC++ 2008)、VC++ 2010 Beta2
C++ CLR编译器:VC++ 2008、VC++ 2010 Beta2
C#编译器:Microsoft (R) Visual C# 2008 Compiler version 3.5.21022.8、Microsoft (R) Visual C# 2010 Compiler version 4.0.21006.1
Java:Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Python:Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on win32、Python 2.6.4
(r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on win32、Python 3.1.1 (r311:74483, Aug 17 2009, 17:02:12) [MSC v.1500 32 bit (Intel)] on win32
Cython:0.11.3
Psyco:1.6
IronPython:IronPython 2.6 (2.6.10920.0) on .NET 2.0.50727.1433
JavaScript:ChromePlus 1.2.6.0(Chromium 4.0.222.3 (Official Build 28644),V8 1.3.15)Lua:5.1.4
LuaJIT:1.1.5、2.0.0-beta1
Ruby:ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-mswin32]
Squirrel:Squirrel 3.0 alpha 2 Copyright (C) 2003-2009 Alberto Demichelis (32 bits)顺带⼀提,G++是采⽤版(⽬前尚⽆GCC 4.4.1和4.4.2的Windows版),VC++ 2008编译器是Microsoft Visual C++ Toolkit 2008⾥的,C#编译器是Microsoft .NET Framework 3.5和4.0 Beta2⾥的,Cython和LuaJIT⽤的C编译器是GCC 4.4.1,LuaJIT 2.0.0还测试了VC++ 2003编译的版
本,Ruby没有采⽤更慢的稳定版。测试时关掉了⼤部分占⽤资源的程序,每种搭配测试5次,取时间最少的⼀次作为最终结果。从控制台运⾏时似乎会影响速度(此时是C++ CLR以超过第2名3%的优势胜出),所以对于exe⽂件,我改成了双击运⾏和控制台各测5次,取最⼩值。测试结果:
语⾔/编译器
编译参数
运⾏时间(秒)
相对速度
C++ (G++ 4.4.1)
-O3 -s
1.765
85.84%
C++ (G++ 4.4.1)
1.859
81.50%
C++ (G++ 4.4.1)
-O3 -s -mfpmath=sse -mtune=native -march=native
1.578
96.01%
C++ (G++ 4.4.1)
-O3 -s -mfpmath=sse -mtune=native -march=native -ffast-math 1.546
97.99%
C++ (VC++ 2008)
/O2 /MD
1.625
93.23%
C++ (VC++ 2008)
/O2 /MD /arch:SSE2
1.593
95.10%
C++ (VC++ 2008)
/O2 /MD /arch:SSE2 /fp:fast
1.562
96.99%
C++ (VC++ 2010 Beta2)
/O2 /MD
1.64
92.38%
C++ (VC++ 2010 Beta2)
/O2 /MD /arch:SSE2
1.562
96.99%
C++ (VC++ 2010 Beta2)
/O2 /MD /arch:SSE2 /fp:fast
1.531
C++ CLR (VC++ 2008)
/O2 /MD /clr
1.578
96.01%
C++ CLR (VC++ 2010 Beta2) /O2 /MD /clr
1.515
100.00%
C# 3.5
⽆参数
3.281
46.17%
C# 3.5
/o
3.219
47.06%
C# 4.0 Beta2
⽆参数
2.203
68.77%
C# 4.0 Beta2
/o
2.187
69.27%
Java 1.6
⽆参数
2.093
72.38%
Python 2.5.4
⽆参数
117.163
1.29%
Python 2.6.4
91.137
1.66%
Python 3.1.1
⽆参数
109.531
1.38%
Cython 0.11.3
-O3
11.795
12.84%
Psyco 1.6 (bind)
⽆参数
26.206
5.78%
Psyco 1.6 (full)
⽆参数
25.650
5.91%
IronPython 2.6
⽆参数
59.630
2.54%
JavaScript (V8 1.3.15)⽆参数
16.653
9.10%
Lua 5.1.4
⽆参数
48.969
3.09%
Lua 5.1.4 (Luac编译) -s
49.031
LuaJIT 1.1.5
⽆参数
24.141
6.28%
LuaJIT 1.1.5
运⾏:-O2
9.641
15.71%
LuaJIT 1.1.5 (Luac编译)
编译:-s
24.093
6.29%
LuaJIT 1.1.5 (Luac编译)
编译:-s运⾏:-O2
9.641
15.71%
LuaJIT 2.0.0-beta1 (GCC 4.4.1编译)⽆参数
1.546
97.99%
LuaJIT 2.0.0-beta1 (GCC 4.4.1编译)运⾏:-O2
4.578
33.09%
LuaJIT 2.0.0-beta1 (GCC 4.4.1编译)⽆参数
1.625
javascript全局数组
93.23%
LuaJIT 2.0.0-beta1 (VC++ 2003编译)运⾏:-O2
4.578
33.09%
Ruby 1.9.1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。