Node.js vs. Spring Boot:Hello World 性能对决,谁更快一点?
<blockquote><p>摘要:本文由葡萄城技术团队于博客园发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。</p>
</blockquote>
<h1 id="前言">前言:</h1>
<p>Spring Boot 在 Java 生态中备受欢迎,它是一款基于 Java 构建的轻量级服务端框架,主要用于 Web 服务。Spring Boot 的应用使得创建各类基于 Spring 的企业级应用变得异常简单。Node.js作为一种基于Chrome V8引擎的JavaScript运行时环境,在服务端上运行JavaScript代码。它以其独特的特性为我们提供了极其便捷的开发方式,今天小编就为大家对比一下Spring Boot与Node.js之间的性能差异。</p>
<h1 id="运行环境">运行环境:</h1>
<p>硬件:MacBook Pro M1 16g</p>
<p>测试工具:Bombardier</p>
<p>测试并发数:50、100、200</p>
<p>版本:</p>
<p>Node.js v19.6.0</p>
<p>Spring Boot v3.0.2</p>
<p>Java17</p>
<h1 id="nodejs-测试代码">Node.js 测试代码:</h1>
<pre><code class="language-javascript">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);
</code></pre>
<h1 id="spring-boot测试代码">Spring Boot测试代码:</h1>
<pre><code class="language-java">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!";
}
}
</code></pre>
<p>测试时,每个并发执行500万请求,对比如下性能指标:</p>
<ul>
<li>耗时</li>
<li>每秒处理请求数</li>
<li>延迟:平均值、中值、q25、q75、q90、最大值(以毫秒为单位)</li>
<li>资源占用情况:CPU和内存平均使用率</li>
</ul>
<h1 id="测试结果">测试结果:</h1>
<p>经过对比测试,绘制了如下图表(延迟以毫秒为单位):</p>
<p><img src="https://img2023.cnblogs.com/blog/139239/202309/139239-20230908104541598-1298166946.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/139239/202309/139239-20230908104557157-1125822710.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/139239/202309/139239-20230908104614533-2034345483.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/139239/202309/139239-20230908104632071-987096106.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/139239/202309/139239-20230908104647970-344831521.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/139239/202309/139239-20230908104704663-1317707008.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/139239/202309/139239-20230908104725036-1700600657.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/139239/202309/139239-20230908104737276-398951046.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/139239/202309/139239-20230908104750391-1482716784.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/139239/202309/139239-20230908104803753-1282760571.png" alt="" loading="lazy"></p>
<h1 id="测试结果分析">测试结果分析:</h1>
<p>资源占用方面,Spring/Java 是一个资源密集型应用,在一个简单的“Hello World”案例中,200并发情况下,Spring 使用了约190%的 CPU 和 470M 的内存。相比之下,Node.js 使用了 95% 的 CPU 和 82M 的内存。</p>
<p>延迟方面,在q75之前,Spring 的延迟低于 Node.js。Spring在最大延迟达到了几秒钟,而Node.js的最大延迟仅 123ms。Spring 的延迟中位数(0.6ms)优于 Node.js(2.5ms)。</p>
<p>总结来看,Node.js 在使用显著较少的系统资源的情况下”吞吐量“(RPS/每秒请求数)更高。</p>
<p>原文链接:https://medium.com/deno-the-complete-reference/node-js-vs-springboot-hello-world-performance-comparison-59b4d461526c</p>
<p><strong>扩展链接:</strong></p>
<p>ChatGPT赋能低代码开发:打造智能应用的双重引擎</p>
<p>窗口函数大揭秘!轻松计算数据累计占比,玩转数据分析的绝佳利器</p>
<p>3D模型+BI分析,打造全新的交互式3D可视化大屏开发方案</p>
</div>
<div id="MySignature" role="contentinfo">
<hr>
<br>
<p style="font-size: 16px; font-family: 微软雅黑, 黑体, Arial; color: #000">本文是由葡萄城技术开发团队发布,转载请注明出处:葡萄城官网</p>
<!--p style="font-size: 16px; font-family: 微软雅黑, 黑体, Arial; color: #000">了解企业级低代码开发平台,请前往活字格
</p><p style="font-size: 16px; font-family: 微软雅黑, 黑体, Arial; color: #000">了解可嵌入您系统的在线 Excel,请前往SpreadJS纯前端表格控件</p>
<p style="font-size: 16px; font-family: 微软雅黑, 黑体, Arial; color: #000">了解嵌入式的商业智能和报表软件,请前往Wyn Enterprise
</p-->
<br><br><br>
来源:https://www.cnblogs.com/powertoolsteam/p/17686998.html
頁:
[1]