1

编者注:io.js成为热门话题,其性能也是关注的热点,看到Raygun团队进行了 Node.js 和 io.js的测试比较,翻译出来供大家参考~


你可能已经知道Raygun在接收奔溃报告数据的接口使用了Node.JS(我们还用Node.JS做了奔溃报告应用)。 Raygun每秒有超过 110,000 个请求,所以接口的性能很重要。

你可能不知道,最近Node.js在社区里变成两个分支:node.jsio.js

虽然有很多关于io.js的讨论,其中一个关注点是Chrome V8 升级的实现。 目前的版本仍然使用Node相对较老的引擎,谷歌完全不支持。

这使人好奇,影响性能的因素是什么?我和同事一起进行了探究。

测试

我们只测试每秒请求。 为此,我们以发出请求和接收响应为基准。

  • 空白Express程序——使用Express中间件,返回一个基本的“Hello World”响应。
  • 原生程序——不使用中间件,返回一个基本的“Hello World”响应。

我们跑了20000个批试验,算出平均吞吐量。

测试基于:

1.Node 0.10.25
2.Node 0.10.36
3.Node 0.12.0
4.io.js 1.20

重要提示:我们还没有做任何聚合,这是一个运行在同一机器上的ApacheBench的简单Node进程。 你应该能够聚合后测出硬件相关的性能。 这毕竟是一个微基准。

结果

  Express.js RPS Raw HTTP RPS
Node 0.10.25 2079 3010
Node 0.10.36 1940 2813
Node 0.12.0 2002 2872
io.js 1.20 2200 3152

clipboard.png

胜者

现在, io.js在这里表现出更好的性能。 同时,Node.js在慢慢改进,这是件伟大的事情。 我认为,随着新竞争的出现,我们将看到更多的改进。

另一个值得注意的是Express。 Express的是一个超级强大的框架,但如果你只是用它的路由功能,可能无法体它的价值(例如API)。

目前,io.js是相当新的,甚至它的维护团队也不提倡生产使用。但我们会密切注视io.js并测试开发团队建议的方案。

英文原文 Node.js performance: Node.js vs io.js
SegmentFault整理编译


江小湖Laker
6.9k 声望371 粉丝

进击的程序媛快去创造奇迹~