Node.js vs Springboot: comparação de desempenho do Hello World

Continuando minha busca por comparações de desempenho, este artigo é sobre Node.js e Springboot. Spring boot é uma tecnologia de servidor leve construída sobre Java que é usada principalmente para serviços da web. O Spring Boot facilita a criação de aplicativos autônomos baseados em Spring de nível de produção que você pode “simplesmente executar”. Spring boot é bastante popular no mundo java.

Quem você acha que é mais rápido para um caso simples de hello world? Acho que a resposta pode ser Springboot porque é compilado em código de byte enquanto o Node.js é interpretado. Se você estiver interessado em descobrir a resposta correta, continue lendo. Você pode se surpreender!

Configurar

O teste é executado no MacBook Pro M1 com 16G de RAM. O teste é executado usando o conhecido testador de HTTP: Bombardier . O teste é executado para 50, 100 e 200 conexões simultâneas.

As versões são:

  • Node.js v19.6.0
  • Springboot 3.0.2 com Java17

Node.js

O código Node.js possui um roteador mínimo que o torna equivalente à funcionalidade fornecida pelo servidor nativo do Spring.

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);

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!";
    }
}

Um total de 5 milhões (5 milhões) de solicitações são executadas para cada nível de simultaneidade.

As seguintes medições são feitas:

  • Tempo gasto
  • Solicitações por segundo
  • Latências : média, mediana, q25, q75, q90, máximo (em milissegundos)
  • Uso do sistema : uso médio de CPU e memória

Aqui estão os gráficos que representam os resultados para cada tipo de medição:

(Observe que todas as latências estão em milissegundos)

minha análise

Primeiro, Spring/Java é um aplicativo com muitos recursos. Para um caso simples de hello world com 200 conexões simultâneas, o Spring usa ~ 190% da CPU e 470 MB de memória. Comparativamente, o Node.js usa 95% da CPU e 82M de memória.

Agora, para as latências, as latências da primavera são menores que as do Node.js até o terceiro quartil. O Spring falha com leituras de latência máxima que duram segundos, enquanto a latência máxima do Node.js atinge 123ms. Mesmo a latência média do Spring (0,6 ms) é significativamente melhor do que a do Node.js (2,5 ms).

Para concluir, o Node.js oferece mais RPS usando significativamente menos recursos do sistema.

ATUALIZAÇÃO : Como este artigo ficou bastante popular na comunidade, recebi comentários de que a comparação do servidor nativo do Node com um framework como o Springboot é injusta. Um ponto muito válido. Já publiquei artigos para comparar Express e Fastify com Springboot. Os links são:

  • Expresso vs Springboot
  • Fastify vs Springboot
  • Expresso vs Spring Webflux
  • Fastify vs Spring Webflux

Suggested posts

Configurar e usar o Apache Kafka com Spring Boot

Kafka com uma bota de mola

Configurar e usar o Apache Kafka com Spring Boot

Introdução O Apache Kafka é uma plataforma de streaming distribuído de software livre que lida com streaming de dados em tempo real tolerante a falhas e em grande escala. O sistema é baseado em um modelo de publicação-assinatura em que os produtores publicam mensagens em tópicos e os consumidores assinam esses tópicos para consumir as mensagens.

Nossos signos de primavera

Nossos signos de primavera

Para nós, aqui no sul de Ontário, e especificamente em nosso próprio microclima, é uma disputa entre a chegada de certos pássaros e o aparecimento de uma das duas plantas que florescem na primavera. Pulmonária e Bloodroot.

Related posts

Como Salvar o Planeta e Ganhar Dinheiro

Como Salvar o Planeta e Ganhar Dinheiro

Quantas vezes você jogou fora uma garrafa de plástico, uma jarra de vidro, uma lata de alumínio ou uma embalagem de energia verde sem pensar duas vezes? Quantas vezes você desejou receber algo em troca de reciclá-los? Se você for como a maioria das pessoas, a resposta provavelmente é muitas vezes. A reciclagem é muitas vezes vista como um aborrecimento, uma tarefa árdua ou um dever que não traz nenhum benefício imediato ou tangível.

Coletando OSINT para caçar ameaças

Coletando OSINT para caçar ameaças

Olá, entusiastas cibernéticos! Bem-vindo de volta ao OSINT para a série de caça a ameaças. No primeiro artigo, apresentei uma visão geral do OSINT e sua importância na caça às ameaças.

O assassinato de Jordan Neely e o problema do racismo “patriótico”

Os EUA podem dar o passo essencial de não igualar comportamento racista a ser um bom americano?

O assassinato de Jordan Neely e o problema do racismo “patriótico”

[Alerta de gatilho: este ensaio inclui capturas de tela de pessoas elogiando o assassino de Jordan Neely.] Os policiais finalmente - e talvez com relutância - acusaram Daniel Penny, o homem que sufocou Jordan Neely até a morte, por aquele homicídio.

A revolução no local de trabalho: os principais especialistas discutem o trabalho híbrido e remoto

A revolução no local de trabalho: os principais especialistas discutem o trabalho híbrido e remoto

No atual cenário de negócios em rápida evolução, o conceito de trabalho híbrido e remoto ganhou um impulso sem precedentes. À medida que as empresas continuam a se adaptar às mudanças nas necessidades e expectativas de seus funcionários, especialistas de várias áreas se reuniram para discutir os benefícios, os desafios e o futuro dessa forma transformadora de trabalhar.