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

相关推荐