Node.js vs Springboot: Halo perbandingan kinerja dunia
Melanjutkan pencarian perbandingan kinerja saya, artikel ini adalah tentang Node.js dan Springboot. Spring boot adalah teknologi server ringan yang dibangun di atas Java yang sebagian besar digunakan untuk layanan web. Spring Boot memudahkan untuk membuat Aplikasi berbasis Spring tingkat produksi yang berdiri sendiri yang dapat Anda "jalankan". Spring boot cukup populer di dunia java.
Menurut Anda siapa yang lebih cepat untuk kasus halo dunia yang sederhana? Saya kira jawabannya bisa Springboot karena dikompilasi menjadi kode byte sementara Node.js ditafsirkan. Jika Anda tertarik untuk mengetahui jawaban yang benar, baca terus. Anda mungkin terkejut!
Mempersiapkan
Tes dijalankan pada MacBook Pro M1 dengan RAM 16G. Pengujian dijalankan menggunakan penguji HTTP terkenal: Bombardier . Tes dijalankan untuk 50, 100, dan 200 koneksi bersamaan.
Versinya adalah:
- Node.js v19.6.0
- Springboot 3.0.2 dengan Java17
Node.js
Kode Node.js memiliki router minimal yang membuatnya setara dengan fungsionalitas yang disediakan oleh server asli 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!";
}
}
Sebanyak 5 juta (5 juta) permintaan dieksekusi untuk setiap tingkat konkurensi.
Pengukuran berikut dilakukan:
- Waktu yang dibutuhkan
- Permintaan per detik
- Latensi : Rata-rata, median, q25, q75, q90, maksimum (dalam milidetik)
- Penggunaan sistem : Rata-rata penggunaan CPU dan memori
Berikut adalah bagan yang mewakili hasil untuk setiap jenis pengukuran:
(Perhatikan bahwa semua latensi dalam milidetik)
Analisis saya
Pertama, Spring/Java adalah aplikasi yang sangat intensif sumber daya. Untuk kasus hello world sederhana dengan 200 koneksi bersamaan, Spring menggunakan ~190% CPU dan memori 470M. Relatif, Node.js menggunakan 95% CPU dan 82M memori.
Sekarang untuk latensi, latensi pegas lebih rendah dari Node.js hingga kuartil ke-3. Musim semi gagal dengan pembacaan latensi maksimum yang berlangsung dalam hitungan detik, sedangkan latensi maksimum Node.js mencapai 123 md. Bahkan latensi median Spring (0,6 md) jauh lebih baik daripada Node.js (2,5 md).
Sebagai kesimpulan, Node.js menawarkan lebih banyak RPS dengan menggunakan sumber daya sistem yang jauh lebih sedikit.
PEMBARUAN : Karena artikel ini menjadi cukup populer di komunitas, saya mendapat komentar bahwa perbandingan server asli Node dengan kerangka kerja seperti Springboot tidak adil. Poin yang sangat valid. Saya sudah menerbitkan artikel untuk membandingkan Express dan Fastify dengan Springboot. Tautannya adalah:

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































