前言:

Spring Boot 在 Java 生态中备受欢迎,它是一款基于 Java 构建的轻量级服务端框架,主要用于 Web 服务。Spring Boot 的应用使得创建各类基于 Spring 的企业级应用变得异常简单。Node.js作为一种基于Chrome V8引擎的JavaScript运行时环境,在服务端上运行JavaScript代码。它以其独特的特性为我们提供了极其便捷的开发方式,今天小编就为大家对比一下Spring Boot与Node.js之间的性能差异。

运行环境:

硬件:MacBook Pro M1 16g

测试工具:Bombardier

测试并发数:50、100、200

版本:

Node.js v19.6.0

Spring Boot v3.0.2

Java17

Node.js 测试代码:

import http from "node:http";

 http.createServer((req, resp) => {
try {
if (req.method !== "GET") {
return resp.writeHead(405).end();
}
if (req.url !== "/") {
return resp.writeHead(404).end();
}
resp.writeHead(200, {
"content-type": "text/plain",
});
resp.end("Hello world");
} catch (e) {
resp.writeHead(500).end();
}
}).listen(3000);

Spring Boot测试代码:

package com.example.demo;

 import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.Spring BootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.http.ResponseEntity;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RestController; @Spring BootApplication
@RestController
public class DemoApplication { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
} @GetMapping("/")
public String handleRequest() {
return "Hello World!";
}
}

测试时,每个并发执行500万请求,对比如下性能指标:

  • 耗时
  • 每秒处理请求数
  • 延迟:平均值、中值、q25、q75、q90、最大值(以毫秒为单位)
  • 资源占用情况:CPU和内存平均使用率

测试结果:

经过对比测试,绘制了如下图表(延迟以毫秒为单位):

测试结果分析:

资源占用方面,Spring/Java 是一个资源密集型应用,在一个简单的“Hello World”案例中,200并发情况下,Spring 使用了约190%的 CPU 和 470M 的内存。相比之下,Node.js 使用了 95% 的 CPU 和 82M 的内存。

延迟方面,在q75之前,Spring 的延迟低于 Node.js。Spring在最大延迟达到了几秒钟,而Node.js的最大延迟仅 123ms。Spring 的延迟中位数(0.6ms)优于 Node.js(2.5ms)。

总结来看,Node.js 在使用显著较少的系统资源的情况下”吞吐量“(RPS/每秒请求数)更高。

原文链接:https://medium.com/deno-the-complete-reference/node-js-vs-springboot-hello-world-performance-comparison-59b4d461526c

扩展链接:

扩展链接:

ChatGPT赋能低代码开发:打造智能应用的双重引擎

窗口函数大揭秘!轻松计算数据累计占比,玩转数据分析的绝佳利器

3D模型+BI分析,打造全新的交互式3D可视化大屏开发方案

Node.js vs. Spring Boot:Hello World 性能对决,谁更快一点?的更多相关文章

  1. 使用Sidecar将Node.js引入Spring Cloud

    网上看到的一篇文章,觉得写得挺好,现转载于此,以方便需要的网友查阅. 该文章介绍了非JAVA语言提供的应用集成到Spring Cloud的这样一个实现,以便我们使用其他语言作为参考. 感谢原作者分享, ...

  2. Node.js V0.12 新特性之性能优化

    v0.12悠长的开发周期(已经过去九个月了,并且还在继续,是有史以来最长的一次)让核心团队和贡献者们有充分的机会对性能做一些优化. 本文会介绍其中最值得注意的几个. http://www.infoq. ...

  3. 【译】 Node.js v0.12的新特性 -- 性能优化

    原文: https://strongloop.com/strongblog/performance-node-js-v-0-12-whats-new/ January 21, 2014/in Comm ...

  4. Node.js V0.12新特性之性能优化

    v0.12悠长的开发周期(已经过去九个月了,并且还在继续,是有史以来最长的一次)让核心团队和贡献者们有充分的机会对性能做一些优化.本文会介绍其中最值得注意的几个. 支持塞住模式的可写流 现在可写流可以 ...

  5. Spring Boot与Micronaut性能比较

    文章转载出处:微信公众号——锅外的大佬 链接:https://mp.weixin.qq.com/s/MdBByJ0ju-rROKg7jsWygA 今天我们将比较两个在JVM上构建微服务的框架:Spri ...

  6. [第十八篇]——Docker 安装 Node.js之Spring Cloud大型企业分布式微服务云架构源码

    Docker 安装 Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一个让 JavaScript 运行在服务端的开发平台. 1.查看可用的 N ...

  7. 2019年Spring Boot面试都问了什么?快看看这22道面试题!

    Spring Boot 面试题 1.什么是 Spring Boot? 2.Spring Boot 有哪些优点? 3.什么是 JavaConfig? 4.如何重新加载 Spring Boot 上的更改, ...

  8. Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型

    Python 的 3.9.0 版本正在开发中,计划在 2020-10-05 发布 final 版本. 官方在 changelog 中披露了很多细节,其中有一项"vectorcall" ...

  9. Spring Boot 性能优化

    spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题.但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代.Spring ...

  10. 你不知道的Node.js性能优化,读了之后水平直线上升

    本文由云+社区发表 "当我第一次知道要这篇文章的时候,其实我是拒绝的,因为我觉得,你不能叫我写马上就写,我要有干货才行,写一些老生常谈的然后加上好多特技,那个 Node.js 性能啊好像 D ...

随机推荐

  1. cve_2020_6507分析

    poc $ cat poc.js array = Array(0x40000).fill(1.1); args = Array(0x100 - 1).fill(array); args.push(Ar ...

  2. 使用openresty替换线上nginx网关之openresty安装细节

    背景 线上跑了多年的一个网关业务,随着部门的拆分,逐渐有了一个痛点.该网关业务主要处理app端请求,app端发起的请求,采用http协议,post方法,content-type采用applicatio ...

  3. Python-PyQt5的安装与简单使用

    一.安装 1.安装 PyQt5 和 PyQt5-tools pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5- ...

  4. 一分钟学一个 Linux 命令 - mv 和 cp

    前言 大家好,我是god23bin.欢迎来到<一分钟学一个 Linux 命令>系列,今天需要你花两分钟时间来学习下,因为今天要讲的是两个命令,mv 和 cp 命令. mv 什么是 mv 命 ...

  5. 【Photoshop】切图保存小坑(选择png格式得到gif问题)

    默认情况下:Photoshop 导出切片为[GIF]格式 当你很嗨皮的把[GIF]调整为[PNG]或[JPG]格式,并保存时: 你会发现,自己的图片格式莫名其妙还是[GIF]: 但,我们的期望是: 原 ...

  6. hvv面试常见框架漏洞问题合集

    1.thinkphp 特征判断 直接在url后加/?s=1 whatweb进行探测,方式:whatweb URL 漏洞 5.0 RCE 原理 thinkphp底层没有对控制器名进行很好的合法性校验,导 ...

  7. 逍遥自在学C语言 | 指针和数组的关联

    前言 指针和数组之间存在着紧密的关系.在本文中,我们将探讨指针和数组的关系.指针算术和数组遍历.多维数组与指针以及指针数组和数组指针. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 ...

  8. 【C++ Primer】2.1 基本内置类型

    1. 基本内置类型 基本算数类型: 类型 含义 最小尺寸 bool 布尔类型 8bits char 字符 8bits wchar_t 宽字符 16bits char16_t Unicode字符 16b ...

  9. Python潮流周刊#10:Twitter 的强敌 Threads 是用 Python 开发的!

    你好,我是猫哥.这里每周分享优质的 Python 及通用技术内容,大部分为英文,已在小标题注明.(标题取自其中一则分享,不代表全部内容都是该主题,特此声明.) 首发于我的博客:https://pyth ...

  10. 高通个别驱动创建Buffer耗时高问题的解决

    前言 最近在优化游戏的时候,发现在在高通特定驱动版本的机器上(855,855+等),创建VB的耗时跟VB的数量成正比,这个应该是驱动的bug.跟官方人员确认过,确实是有这个问题,他们给的解决方案是减少 ...