设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

Node.js和io.js-在性能上很不同

2015-1-21 10:46| 发布者: joejoe0332| 查看: 988| 评论: 0|原作者: volving, zhhw|来自: oschina

摘要: 对于相同的代码你可能会遇到的性能相差5倍以上,这取决于你使用的是node还是io.js。首先,让我说的更明白点。这不是也不可能是综合测试。每一个引用都是不一样的。我的发现可能或者不可能使用与你的案例,这取决于你 ...

  对于相同的代码你可能会遇到的性能相差5倍以上,这取决于你使用的是node还是io.js。


  首先,让我说的更明白点。这不是也不可能是综合测试。每一个引用都是不一样的。我的发现可能或者不可能使用与你的案例,这取决于你的Node引用是做什么的。


我的测试

  在前面的文章中,我使用C,JAVA,Javascript和FreePascal测试了一个很简单的算法性能寻找prime-numbers和Sieve of Eratosthenes。为了测试Javascript,我基于Node选择三种不同的实现算法,包括普通阵列,输入阵列或缓冲。


  今天我将使用相同的标准来说明node.js与io.js之间有多大的性能差距。对于你们中那些对io.js还不了解的人,io.js是node的一个分支。


  我将使用在我前面文章中出现的相同的代码。你们能够在文章的结尾找到它。


  Node和io.js有一个重要的共同点。他们都依赖于Chrome的V8 Javascript引擎。但是他们使用的是不同的V8版本。所以,当我们比较Node和IO.js的时候,其实我是比较他们使用的不同版本的Chrome V8 JavaScript引擎。


  在我的前一个测试中,我用的Node0.10.32,因为这是我使用的Linux发新版OpenSuse13.2自带的。但是在今天的测试中,我将 使用Node 0.10.35和io.js 1.0.2,因为他们是最新的发布版。是的,我知道io.js描述该版本为“不稳定”,但它是我唯一能获取的版本。


  以运行在Intel i7-4771 3.5GHz上的64位OpenSuse 13.2系统为测试环境(作者话痨,还顺带提了一下自己之间写的文章中也用了同样的方法),前后测试了7次,测试结果(时间)取中位数,结果如下:



Node.js 0.10.35      io.js 1.0.2
Buffer 4.259 5.006
Typed-Array 4.944 11.555
Regular Array    40.416 7.359

(时间单位为秒)


  如你所见,Node和io.js对typed-array和regular array性能的变化让人瞠目。


  操作buffer,io.js比Node.js多花18%的时间。对这个结果来说不好不坏,无需操心。


  对type-array的测试结果显示Node.js、io.js两者差距显著:后者所费时间超过前者的两倍!


  对regular array的测试却得出了相反的结果,而且更加明显:Node.js所费时间超过了io.js的5倍!


  它们性能差异如此之大让我深感烦扰。作为如此成熟的产品,V8 JS引擎在不同版本上所表现的差异实在大。 我只能忍受性能伴随版本更新一直提升的产品,但上述测试数据表明性能有可能适得其反,这实在不该发生。


结论

  难决胜负!Node和io.js相互间时有赶超。但得牢记一点:这个小测试还和实际应用相差甚远呢。


  据我所悉,就连不同版本的Node都会有不同。曾记得一个开发版的Node在处理buffer的性能上却有下降表现,参考issue on GitHub.


  如果项目部署于AWS或Azure的多台server上,CPU开销较重,那么这个问题将十分重要。如果application在你所用的Node/io.js上的性能很差,那你得需要更多的server,这将让你更费银子。


  本文浓缩成一句可取的话即:时刻牢记,测试你的代码在不同版本Node/io.js上的性能


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部