Node.js 性能比较: Node.js vs io.js

简介: 你可能已经知道Raygun在接收奔溃报告数据的接口使用了Node.JS(我们还用Node.JS做了奔溃报告应用)。 Raygun每秒有超过 110,000 个请求,所以接口的性能很重要。你可能不知道,最近Node.js在社区里变成两个分支: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

image.png

胜者

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

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

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

相关文章
|
6月前
|
监控 负载均衡 JavaScript
有哪些有效的方法可以优化Node.js应用的性能?
有哪些有效的方法可以优化Node.js应用的性能?
350 69
|
2月前
|
JavaScript 前端开发 IDE
TypeScript vs. JavaScript:技术对比与核心差异解析
TypeScript 作为 JavaScript 的超集,通过静态类型系统、编译时错误检测和强大的工具链支持,显著提升代码质量与可维护性,尤其适用于中大型项目和团队协作。相较之下,JavaScript 更灵活,适合快速原型开发。本文从类型系统、错误检测、工具支持等多维度对比两者差异,并提供技术选型建议,助力开发者合理选择。
558 1
|
9月前
|
前端开发 JavaScript Java
JavaScript闭包深入剖析:性能剖析与优化技巧
JavaScript 闭包是强大而灵活的特性,广泛应用于数据封装、函数柯里化和事件处理等场景。闭包通过保存外部作用域的变量,实现了私有变量和方法的创建,提升了代码的安全性和可维护性。然而,闭包也可能带来性能问题,如内存泄漏和执行效率下降。为优化闭包性能,建议采取以下策略:及时解除对不再使用的闭包变量的引用,减少闭包的创建次数,使用 WeakMap 管理弱引用,以及优化闭包结构以减少作用域链查找的开销。在实际开发中,无论是 Web 前端还是 Node.js 后端,这些优化措施都能显著提升程序的性能和稳定性。
226 70
|
8月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
JavaScript 前端开发 Java
深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
Array.find() 是 JavaScript 数组方法中一个非常实用和强大的工具。它不仅提供了简洁的查找操作,还具有性能上的独特优势:返回的引用能够直接影响原数组的数据内容,使得数据更新更加高效。通过各种场景的展示,我们可以看到 Array.find() 在更新、条件查找和嵌套结构查找等场景中的广泛应用。 在实际开发中,掌握 Array.find() 的特性和使用技巧,可以让代码更加简洁高效,特别是在需要直接修改原数据内容的情形。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
8月前
|
前端开发 JavaScript 大数据
关于JavaScript性能问题的误解
JavaScript 是单线程语言,代码逐行执行,遇到大数据量计算可能影响性能。前端同事担心遍历大量数据会导致性能问题,但实际上,即使遍历1000、10000条数据,耗时也较少。测试代码执行时间有三种方法:Date.now、console.time 和 performance.now,其中 performance.now 精度最高。开发中不必过度担忧遍历带来的性能损耗,保持代码清晰更重要。
|
11月前
|
JSON 缓存 负载均衡
Node.js 的性能
Node.js 的性能
303 12
|
11月前
|
存储 JavaScript NoSQL
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
199 9
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。