A comparative analysis of the performance of JavaScript code execution environments: Node.js, Deno and Bun

Metadane

  • Autorzy: Andrei Aleksandrovich Smirnov, Egor Aleksandrovich Podolskiy, Artem Vyacheslavovich Cherenkov, Ilia Borisovich Gosudarev
  • Rok: 2024
  • Źródło: Программные системы и вычислительные методы (Programming Systems and Computational Methods), nr 4, s. 109–123
  • DOI: 10.7256/2454-0714.2024.4.72206
  • Status: to-read
  • Kategoria główna: Systems
  • Podkategorie: JavaScript Runtimes, Performance Benchmarking
  • Tagi: #javascript #nodejs #deno #bun #runtime #performance #benchmark #comparison #project:js-runtime-energy

Streszczenie

Pierwsza akademicka praca bezpośrednio porównująca trzy główne środowiska uruchomieniowe JavaScript: Node.js, Deno i Bun. Autorzy proponują holistyczną i walidowalną metodologię pomiaru i porównania wydajności kodu JS. Eksperymenty prowadzone z użyciem kontenerów Docker i automatyzacji przez Ansible. Mierzą czas wykonania różnych scenariuszy obliczeniowych.

Kluczowy gap: Praca nie mierzy zużycia energii — wyłącznie czas. To jest główna luka, którą wypełnia proponowane badanie JE-1.


Kluczowe Wnioski

  • Bun: najlepszy w synchronicznych operacjach (sortowanie, przetwarzanie JSON)
  • Bun: gorszy od Node.js i Deno przy sprawdzaniu liczb pierwszych (operacje CPU-intensive)
  • Deno: wysoka wydajność w operacjach asynchronicznych (Rust + biblioteka Tokio)
  • Node.js: niższe wyniki w synchronicznych zadaniach, ale stabilna wydajność — solidny wybór dla dużych projektów
  • Pierwsza praca proponująca “holistyczną i walidowalną metodologię” pomiaru wydajności JS runtimeów

Metodologia

  • Środowisko: Docker containers (izolacja) + Ansible (automatyzacja)
  • Mierzona metryka: czas wykonania (NIE energia!)
  • Scenariusze testowe: sortowanie tablic, przetwarzanie JSON, sprawdzanie liczb pierwszych, operacje asynchroniczne
  • Protokół: automatyczne uruchamianie, zbieranie wyników

Główne Koncepcje

  • Node.js: najbardziej dojrzałe środowisko, V8 (Google), npm ekosystem
  • Deno: stworzony przez twórcę Node.js (Ryan Dahl), TypeScript natywnie, bezpieczeństwo, Rust + Tokio
  • Bun: nowy, wysokowydajny runtime, JavaScriptCore (Apple), szybka inicjalizacja

Wyniki

TestNajlepszyNajgorszy
SortowanieBunNode.js
JSON parse/serializeBunNode.js
Liczby pierwsze (CPU)Node.js/DenoBun
Async I/ODenoNode.js

Przydatne Cytaty

“For the first time, a holistic and valid methodology for measuring and comparing JavaScript code performance in modern runtime environments has been proposed.” (Abstract)

“Bun shows the best performance in synchronous computations (sorting, JSON processing), but is behind Node.js and Deno in checking for prime numbers.” (Abstract)


Datasety

  • Własne benchmarki w Docker/Ansible (nie opublikowane publicznie jako osobny dataset)

Powiązane Tematy

  • Gap badawczy JE-1: dodanie wymiaru energetycznego do tego porównania
  • Pereira 2017/2021 (metodologia RAPL dla JS)
  • De Macedo 2022 (Wasm vs JS energia)
  • PowerJoular (narzędzie do pomiaru energii)

Notatki

Elementów w folderze: 0.