Python vs JavaScript
Python是个比较成熟的语言,运行速度在几年前是快于JavaScript的。但这些年
JavaScript的解释器发展很快,特别是Google的V8和Mozilla的SpiderMonkey,
将JavaScript的运行速度提升了一大块,以致JavaScript的运行速度大有反超Python
之势,但Python也不甘示弱,PyPy项目经过几年的开发之后,最近也在频频发布版本,
将JIT带到Python之中,所以谁比谁牛,还很难说。这里做个简单的测试:
测试环境:
CPU:Intel(R)Pentium(R)[email protected]双核
操作系统:DebianGNU/Linux6.064位
GoogleJS引擎:来自Node.jsv0.6.12(命令:node)
MozillaJS引擎:来自xulrunner-11.0(命令:xpcshell)
Python:Debian自带的Python2.6.6(命令:python)
PyPy:pypy-1.8(命令:pypy)
先测试简单的循环累加,测试代码:
testSum.js
vari,j,s;
for(i=0;i<100;i++){
s=0;
for(j=0;j<100000;j++)
s+=j;
}
if('function'==typeof(print))
print(i,s);
else
console.log(i,s);
testSum.py
i=0
whilei<100:
s=0
j=0
whilej<100000:
s+=j
j+=1
i+=1
printi,s
测试结果:
timenodetestSum.js:0m0.052s
timexpcshelltestSum.js:0m1.808s
timepythontestSum.py:0m2.199s
timepypytestSum.py:0m0.188s
再测试Dict操作,测试代码:
testDict.js
varD={};
vari,s,k;
for(i=0;i<100000;i++)
D['k'+i]=i;
for(i=0;i<100;i++){
s=0;
for(kinD)
s+=D[k];
}
if('function'==typeof(print))
print(i,s);
else
console.log(i,s);
testDict.py
D={}
i=0
whilei<100000:
D['k%d'%i]=i
i+=1
i=0
whilei<100:
s=0
forkinD:
s+=D[k]
i+=1
printi,s
测试结果:
timenodetestDict.js:0m3.645s
timexpcshelltestDict.js:0m2.894s
timepythontestDict.py:0m2.954s
timepypytestDict.py:0m1.044s
测试总结:
循环累加操作:node<pypy<xpcshell<python最慢的是Python
Dict操作:pypy<xpcshell<python<node最慢的是Node.js(GoogleV8引擎)
经过简单的测试,个人感觉Node.js在运算速度方面是最快的,但内置的数据结构不
够优化,在所有的实现中是最差的。个人感觉,Node.js的作者如果将JavaScript引擎
由GoogleV8换为MozillaSpiderMonkey的话,在综合性能测试中,或许会更佳!另外
,本人非常看好PyPy,随着PyPy的不断成熟,在大规模的业务逻辑开发中,用Python
写代码,将是一种享受,运行速度也无需担忧!
一家之言,欢迎讨论!
http://javaeye.vipsinaapp.com/rblog_sina