对于相同的代码你可能会遇到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.
评论删除后,数据将无法恢复
评论(85)
引用来自“双城记”的评论
OSC上翻译的大多数文章质量都非常非常渣。翻译渣+文章内容渣
引用来自“久永”的评论
你弄个好翻译给我们看看?引用来自“Raymin”的评论
>> 对于相同的代码你可能会遇到的性能相差5倍以上 第一句就是病句! 为翻译而翻译,和为让人看懂而翻译,会产生截然不同的结果。 不要动不动就不服气,反省是进步的捷径!引用来自“zhhw”的评论
接受批评,英语的确很渣,以后一定更加认真对待这个翻译。引用来自“久永”的评论
你的做法是对的,不用和他们这种素质的喷子多争执。 维护网络环境,每个读者都有责任~ 一句话,喷子死全家!引用来自“金大胖”的评论
贱逼一枚,老子骂你也不会骂你父母,我和你不一样,动不动把父母拿出来骂!你本人是个贱逼,和你父母无关引用来自“久永”的评论
你也承认自己骂人了吗? 你骂人了,别人还该听你的,什么能骂,什么不能骂?引用来自“金大胖”的评论
骂我可以,你可以骂我,但是你个贱逼不要动不动就把父母拉出来骂!真是个贱逼一枚,但是我不骂你父母,你贱逼我不会牵扯其他人引用来自“久永”的评论
第一,既然干了不道德的事,就不要怪别人不道德。 第二,我只是尖刻的打比方而已,我没有骂人,一开始就骂人的是你自己,不清楚可以看我们的互喷记录~引用来自“金大胖”的评论
贱逼引用来自“久永”的评论
谢谢你用语言证明我的观点~引用来自“金大胖”的评论
我自己怎么样,关父母什么事,你个贱逼引用来自“久永”的评论
你这不是让随便什么人都会回答你 ——要问他们怎么生的、怎么养的、怎么教的你吗? 唉……真没见过这么配合的人,算了,不欺负你了,到此为止吧~引用来自“双城记”的评论
OSC上翻译的大多数文章质量都非常非常渣。翻译渣+文章内容渣
引用来自“久永”的评论
你弄个好翻译给我们看看?引用来自“Raymin”的评论
>> 对于相同的代码你可能会遇到的性能相差5倍以上 第一句就是病句! 为翻译而翻译,和为让人看懂而翻译,会产生截然不同的结果。 不要动不动就不服气,反省是进步的捷径!引用来自“zhhw”的评论
接受批评,英语的确很渣,以后一定更加认真对待这个翻译。引用来自“久永”的评论
你的做法是对的,不用和他们这种素质的喷子多争执。 维护网络环境,每个读者都有责任~ 一句话,喷子死全家!引用来自“金大胖”的评论
贱逼一枚,老子骂你也不会骂你父母,我和你不一样,动不动把父母拿出来骂!你本人是个贱逼,和你父母无关引用来自“久永”的评论
你也承认自己骂人了吗? 你骂人了,别人还该听你的,什么能骂,什么不能骂?引用来自“金大胖”的评论
骂我可以,你可以骂我,但是你个贱逼不要动不动就把父母拉出来骂!真是个贱逼一枚,但是我不骂你父母,你贱逼我不会牵扯其他人引用来自“久永”的评论
第一,既然干了不道德的事,就不要怪别人不道德。 第二,我只是尖刻的打比方而已,我没有骂人,一开始就骂人的是你自己,不清楚可以看我们的互喷记录~引用来自“金大胖”的评论
贱逼引用来自“久永”的评论
谢谢你用语言证明我的观点~引用来自“金大胖”的评论
我自己怎么样,关父母什么事,你个贱逼引用来自“久永”的评论
你这不是让随便什么人都会回答你 ——要问他们怎么生的、怎么养的、怎么教的你吗? 唉……真没见过这么配合的人,算了,不欺负你了,到此为止吧~引用来自“双城记”的评论
OSC上翻译的大多数文章质量都非常非常渣。翻译渣+文章内容渣
引用来自“久永”的评论
你弄个好翻译给我们看看?引用来自“Raymin”的评论
>> 对于相同的代码你可能会遇到的性能相差5倍以上 第一句就是病句! 为翻译而翻译,和为让人看懂而翻译,会产生截然不同的结果。 不要动不动就不服气,反省是进步的捷径!引用来自“zhhw”的评论
接受批评,英语的确很渣,以后一定更加认真对待这个翻译。引用来自“久永”的评论
你的做法是对的,不用和他们这种素质的喷子多争执。 维护网络环境,每个读者都有责任~ 一句话,喷子死全家!引用来自“金大胖”的评论
贱逼一枚,老子骂你也不会骂你父母,我和你不一样,动不动把父母拿出来骂!你本人是个贱逼,和你父母无关引用来自“久永”的评论
你也承认自己骂人了吗? 你骂人了,别人还该听你的,什么能骂,什么不能骂?引用来自“金大胖”的评论
骂我可以,你可以骂我,但是你个贱逼不要动不动就把父母拉出来骂!真是个贱逼一枚,但是我不骂你父母,你贱逼我不会牵扯其他人引用来自“久永”的评论
第一,既然干了不道德的事,就不要怪别人不道德。 第二,我只是尖刻的打比方而已,我没有骂人,一开始就骂人的是你自己,不清楚可以看我们的互喷记录~引用来自“金大胖”的评论
贱逼引用来自“久永”的评论
谢谢你用语言证明我的观点~引用来自“金大胖”的评论
我自己怎么样,关父母什么事,你个贱逼引用来自“双城记”的评论
OSC上翻译的大多数文章质量都非常非常渣。翻译渣+文章内容渣
引用来自“久永”的评论
你弄个好翻译给我们看看?引用来自“Raymin”的评论
>> 对于相同的代码你可能会遇到的性能相差5倍以上 第一句就是病句! 为翻译而翻译,和为让人看懂而翻译,会产生截然不同的结果。 不要动不动就不服气,反省是进步的捷径!引用来自“zhhw”的评论
接受批评,英语的确很渣,以后一定更加认真对待这个翻译。引用来自“久永”的评论
你的做法是对的,不用和他们这种素质的喷子多争执。 维护网络环境,每个读者都有责任~ 一句话,喷子死全家!引用来自“金大胖”的评论
贱逼一枚,老子骂你也不会骂你父母,我和你不一样,动不动把父母拿出来骂!你本人是个贱逼,和你父母无关引用来自“久永”的评论
你也承认自己骂人了吗? 你骂人了,别人还该听你的,什么能骂,什么不能骂?引用来自“金大胖”的评论
骂我可以,你可以骂我,但是你个贱逼不要动不动就把父母拉出来骂!真是个贱逼一枚,但是我不骂你父母,你贱逼我不会牵扯其他人引用来自“久永”的评论
第一,既然干了不道德的事,就不要怪别人不道德。 第二,我只是尖刻的打比方而已,我没有骂人,一开始就骂人的是你自己,不清楚可以看我们的互喷记录~引用来自“金大胖”的评论
贱逼引用来自“久永”的评论
谢谢你用语言证明我的观点~引用来自“双城记”的评论
OSC上翻译的大多数文章质量都非常非常渣。翻译渣+文章内容渣
引用来自“久永”的评论
你弄个好翻译给我们看看?引用来自“双城记”的评论
这种强盗理论真是屡试不爽是吧? 评价菜好不好吃的前提我必须是个厨子?引用来自“久永”的评论
我的意思是批评无用,有个差的翻译总强过没有,如果你觉得翻译太差,你可以给我个更好的翻译来看,我很感激,不一定一定要你自己翻译。如果只说别人不好,却不知别人努力与付出,这样的话只能是降低自己的品格~引用来自“金大胖”的评论
我觉得我们楼下食堂的饭好难吃,莫非我要每天自己去食堂去做饭吃??引用来自“久永”的评论
你可以不去吃,为啥药犯贱?也难怪,天天吃屎,只会喷粪!Osc没请你来,OK? ——我不是Osc的人,只是网上只会批评的蛆真是有碍观瞻,影响大家看技术文章。引用来自“金大胖”的评论
你的意思是OSC请你来了???我也不是OSC的人。你的意思是只要看文章就不能批评了??谁TMD“网上只会批评了”,偶尔看一个不顺眼的不能批评了?你真是猪一样思想,只要不影响自己的利益就只会在那吃。引用来自“久永”的评论
没请我来,我自己来了,但是我没犯贱喷主人家不好~没犯贱说人家做了翻译的不如自己啥都没做光会喷的~ 你为大家做的贡献在哪里?引用来自“双城记”的评论
OSC上翻译的大多数文章质量都非常非常渣。翻译渣+文章内容渣
引用来自“久永”的评论
你弄个好翻译给我们看看?引用来自“Raymin”的评论
>> 对于相同的代码你可能会遇到的性能相差5倍以上 第一句就是病句! 为翻译而翻译,和为让人看懂而翻译,会产生截然不同的结果。 不要动不动就不服气,反省是进步的捷径!引用来自“zhhw”的评论
接受批评,英语的确很渣,以后一定更加认真对待这个翻译。引用来自“久永”的评论
你的做法是对的,不用和他们这种素质的喷子多争执。 维护网络环境,每个读者都有责任~ 一句话,喷子死全家!引用来自“金大胖”的评论
贱逼一枚,老子骂你也不会骂你父母,我和你不一样,动不动把父母拿出来骂!你本人是个贱逼,和你父母无关引用来自“久永”的评论
你也承认自己骂人了吗? 你骂人了,别人还该听你的,什么能骂,什么不能骂?引用来自“金大胖”的评论
骂我可以,你可以骂我,但是你个贱逼不要动不动就把父母拉出来骂!真是个贱逼一枚,但是我不骂你父母,你贱逼我不会牵扯其他人引用来自“久永”的评论
第一,既然干了不道德的事,就不要怪别人不道德。 第二,我只是尖刻的打比方而已,我没有骂人,一开始就骂人的是你自己,不清楚可以看我们的互喷记录~引用来自“金大胖”的评论
贱逼引用来自“双城记”的评论
OSC上翻译的大多数文章质量都非常非常渣。翻译渣+文章内容渣
引用来自“久永”的评论
你弄个好翻译给我们看看?引用来自“Raymin”的评论
>> 对于相同的代码你可能会遇到的性能相差5倍以上 第一句就是病句! 为翻译而翻译,和为让人看懂而翻译,会产生截然不同的结果。 不要动不动就不服气,反省是进步的捷径!引用来自“zhhw”的评论
接受批评,英语的确很渣,以后一定更加认真对待这个翻译。引用来自“久永”的评论
你的做法是对的,不用和他们这种素质的喷子多争执。 维护网络环境,每个读者都有责任~ 一句话,喷子死全家!引用来自“金大胖”的评论
贱逼一枚,老子骂你也不会骂你父母,我和你不一样,动不动把父母拿出来骂!你本人是个贱逼,和你父母无关引用来自“久永”的评论
你也承认自己骂人了吗? 你骂人了,别人还该听你的,什么能骂,什么不能骂?引用来自“金大胖”的评论
骂我可以,你可以骂我,但是你个贱逼不要动不动就把父母拉出来骂!真是个贱逼一枚,但是我不骂你父母,你贱逼我不会牵扯其他人引用来自“久永”的评论
第一,既然干了不道德的事,就不要怪别人不道德。 第二,我只是尖刻的打比方而已,我没有骂人,一开始就骂人的是你自己,不清楚可以看我们的互喷记录~引用来自“双城记”的评论
OSC上翻译的大多数文章质量都非常非常渣。翻译渣+文章内容渣
引用来自“久永”的评论
你弄个好翻译给我们看看?引用来自“Raymin”的评论
>> 对于相同的代码你可能会遇到的性能相差5倍以上 第一句就是病句! 为翻译而翻译,和为让人看懂而翻译,会产生截然不同的结果。 不要动不动就不服气,反省是进步的捷径!引用来自“zhhw”的评论
接受批评,英语的确很渣,以后一定更加认真对待这个翻译。引用来自“久永”的评论
你的做法是对的,不用和他们这种素质的喷子多争执。 维护网络环境,每个读者都有责任~ 一句话,喷子死全家!引用来自“金大胖”的评论
贱逼一枚,老子骂你也不会骂你父母,我和你不一样,动不动把父母拿出来骂!你本人是个贱逼,和你父母无关引用来自“久永”的评论
你也承认自己骂人了吗? 你骂人了,别人还该听你的,什么能骂,什么不能骂?引用来自“金大胖”的评论
骂我可以,你可以骂我,但是你个贱逼不要动不动就把父母拉出来骂!真是个贱逼一枚,但是我不骂你父母,你贱逼我不会牵扯其他人