Express vs Springboot: Comparação de desempenho do Hello World
No artigo anterior , onde comparei o servidor HTTP nativo do Node com o spring, recebi comentários de que a comparação não era justa. Spring é um framework, portanto deve ser comparado com um framework no lado do Node: Express, Fastify, Nest.js, etc. Um ponto muito válido.
Este artigo compara o extremamente popular express.js com spring. É sabido que o expresso é bastante lento. Não espero que tenha um desempenho melhor do que a primavera. A configuração de teste é a mesma: MacBook M1 com 16G RAM. O Node.js v19.7.0 é comparado com o Spring 3.0.2 sobre o Java 17.
O código é o seguinte:
Node.js
import express from "express";
const app = express();
const port = 3000;
app.get("/", (req, res) => {
res.send("Hello World!");
});
app.listen(port, () => console.log("Listening on", port));
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.http.ResponseEntity;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/")
public String handleRequest() {
return "Hello World!";
}
}
Vamos pular direto para os resultados.
Não estou nem um pouco surpreso com os resultados. Nas minhas corridas anteriores , vi que o expresso é muito lento. E é o caso aqui também. Express acaba sendo duas a três vezes mais lento que a primavera. O único problema com o spring é o uso excessivo de CPU e memória.
VENCEDOR : Primavera
Uma comparação semelhante com fastify pode ser vista aqui .





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)