PRODSouveräne europäische BaaS-PlattformÖffnen Sie das Dashboard →

Leistung · 12 Min. Lesezeit

Rust vs. Node.js: Backend-Benchmark und Latenz

Affane Daylami · Fondateur · 5. Juli 2026

Zurück zum Blog

Laut einer unabhängigen Community-Benchmark, die im August 2025 aktualisiert wurde, laufen alle Rust-Frameworks zwischen 18.000 und 22.000 Anfragen pro Sekunde mit einer Latenz von 1,4 bis 1,7 ms. Äquivalente Node.js-Frameworks begrenzen zwischen 5.766 und 9.340 Anforderungen/s, bei 3,4–5,5 ms, auf derselben Hardware (Sharkbench, 24. August 2025).

Dieser englische Text wurde automatisch aus dem französischen Original generiert und wurde noch nicht überprüft.
Diese Seite wurde automatisch übersetzt. Maßgeblich ist die englische Version.

Wir haben diese Bank nicht selbst geleitet: Es handelt sich hierbei um öffentliche, aus Quellen stammende und datierte Zahlen Dritter. In diesem Artikel wird detailliert beschrieben, was sie sagen, welche Methodik dahinter steckt und was sie tatsächlich für eine Backend-Wahl ändert – kein Vergleich von Aurabase mit einem Konkurrenten.

Der Kern von Aurabase läuft in Rust auf axum und tokio – verifiziert im Cargo.toml des Monorepo, zehn Dienste, die dieselbe Abhängigkeit teilen. Allerdings haben wir bisher keine eigenen Kennzahlen veröffentlicht. Wenn Sie nach einer genauen Aurabase-Latenz suchen, gibt es diese noch nicht: Die Methodik steht vor der Zahl, nicht umgekehrt.

Das Wesentliche

  • Auf Sharkbench (Community-Bench, Ryzen 7 7800X3D, Docker/Linux, 24.08.2025): Actix, Hyper, Axum und Rocket laufen alle zwischen 18.047 und 21.965 req/s bei 1,4-1,7 ms. Fastify, Koa und Express begrenzen auf der Node.js-Seite zwischen 5.766 und 9.340 req/s, bei 3,4–5,5 ms.
  • Die Laufzeit wiegt genauso viel wie die Sprache: Derselbe Express-Code reicht von 5.766 Req/s auf Node.js auf 18.917 Req/s auf Bun – ein Faktor ×3,3, ohne eine Zeile zu ändern.
  • Die Speicherlücke ist am deutlichsten: 8,5 MB für Axum gegenüber 82,5 MB für Express/Node.js – passend zum Fehlen des Garbage Collectors von Rust.
  • Aurabase hat bisher keine eigenen Benchmarks veröffentlicht. Der Rust/Axum/Tokio-Kern wird im Code überprüft – nicht die Leistung.
  • Eine isolierte Zahl beweist nichts: Hardware, Framework-Version, Nutzlastgröße und Wettbewerbsgrad variieren das Ranking stärker als die Sprache allein.
#
Die Bank

Was eine aktuelle Bank eines Drittanbieters zeigt

Sharkbench ist ein unabhängiges Community-Projekt, das drei Dinge misst: die Fähigkeit eines Frameworks, gleichzeitige HTTP-Anfragen, I/O-Vorgänge und JSON-Serialisierung zu verarbeiten. Der Test läuft unter Docker/Linux auf einem Ryzen 7 7800X3D, mit einem letzten öffentlichen Update am 24. August 2025 (sharkbench.dev/web, abgerufen am 24. August 2026).

Durchsatz in Anfragen pro Sekunde, Rust vs. Node.jsActix (Rust) 21.965 Anforderungen/s, Hyper (Rust) 21.781 Anforderungen/s, Axum (Rust) 21.030 Anforderungen/s, Rocket (Rust) 18.047 Anforderungen/s, Fastify (Node.js) 9.340 Anforderungen/s, Koa (Node.js) 8.828 Anforderungen/s, Express (Node.js) 5.766 Anfragen/s. Quelle: Sharkbench, 24. August 2025.05k10k15k20kActix (Rost)21 965Hyper (Rost)21 781Axum (Rost)21 030Rakete (Rost)18 047Fastify (Node.js)9 340Koa (Node.js)8 828Express (Node.js)5 766

Quelle: Sharkbench, 24. August 2025 – Docker/Linux, Ryzen 7 7800X3D.

Axum – das Framework, das Aurabase für seinen Rust-Kern verwendet, verifiziert in Cargo.toml – verarbeitet auf dieser Bank 21.030 Anfragen pro Sekunde. Express, das in der Produktion am häufigsten verwendete Node.js-Framework, verarbeitet 5.766 auf derselben Hardware: ein Faktor von 3,6. Dies ist kein Einzelfall. Die vier getesteten Rust-Frameworks liegen alle in einem engen Bereich von 18.000 bis 22.000 req/s, während die drei getesteten Node.js-Frameworks zwischen 5.766 und 9.340 liegen.

In der Praxis misst „req/s“ den Durchsatz unter anhaltender gleichzeitiger Last – nicht die Geschwindigkeit einer isolierten Anfrage auf einer Website mit geringem Datenverkehr. Bei einem Endpunkt, der alle paar Sekunden aufgerufen wird, ist der Unterschied nie sichtbar. Entscheidend wird es bei einem Hot-Endpunkt – einem Echtzeitfluss, einer öffentlichen API mit starkem Datenverkehr, einem Job, der Tausende von Aufrufen aneinanderreiht –, wo die Anzahl der pro CPU-Kern verarbeiteten Anfragen bei gleicher Hardware direkt die Infrastrukturrechnung bestimmt.

#
Latenz

Die Latenz folgt dem gleichen Muster

Die durchschnittliche Latenz folgt auf dieser Bank der gleichen Hierarchie: 1,4 bis 1,7 ms für die getesteten Rust-Frameworks, verglichen mit 3,4 bis 5,5 ms für die getesteten Node.js-Frameworks.

Durchschnittliche Latenz in Millisekunden, Rust vs. Node.jsActix (Rust) 1,4 ms, Hyper (Rust) 1,5 ms, Axum (Rust) 1,6 ms, Rocket (Rust) 1,7 ms, Fastify (Node.js) 3,4 ms, Koa (Node.js) 3,6 ms, Express (Node.js) 5,5 ms. Quelle: Sharkbench, 24. August 2025.0ms1ms2ms3 ms4 ms5msActix (Rost)1,4 msHyper (Rost)1,5 msAxum (Rost)1,6 msRakete (Rost)1,7 msFastify (Node.js)3,4 msKoa (Node.js)3,6 msExpress (Node.js)5,5 ms

Quelle: Sharkbench, 24. August 2025 – mittlere Latenz, nicht p99.

Bei dieser Zahl handelt es sich um einen Durchschnitt, nicht um p99. Garbage-Pausen in einer verwalteten Laufzeit wirken sich hauptsächlich auf die Versandwarteschlange aus – die langsamsten Anforderungen, nicht den Median. Dies ist das Thema eines speziellen Artikels in dieser Reihe: Warum das Fehlen eines Garbage Collectors die p99-Latenz ändert.

#
Warum

Warum Rust keine GC-Pause bezahlen muss

Rust verwaltet den Speicher nach Besitz und überprüft ihn zur Kompilierungszeit – kein Garbage Collector läuft im Hintergrund und unterbricht die Ausführung. Das offizielle Rust Book fasst es wie folgt zusammen: „Keine der Eigentumsfunktionen wird Ihr Programm verlangsamen, während es läuft“ (The Rust Programming Language, doc.rust-lang.org, abgerufen am 24. August 2026). Der Speicher wird freigegeben, sobald die Variable, die ihn besitzt, den Gültigkeitsbereich verlässt – ein bekannter Zeitpunkt zur Kompilierungszeit, keine unvorhersehbare Pause zur Laufzeit.

ownership.rsrust
fn main() {
    let data = String::from("réponse API"); // „data“ besitzt die Zeichenfolge
    process(data); // Der Besitz verlässt hier
    // „data“ ist hier nicht mehr gültig – kein baumelnder Zeiger, kein Double Free
} // „Daten“ werden hier deterministisch freigegeben

fn process(s: String) {
    println!("{s}");
} // „s“ geht hier außerhalb des Geltungsbereichs: sofortige Veröffentlichung, ohne Garbage-Collection-Pass

Node.js hingegen läuft auf einem einzelnen JavaScript-Thread und delegiert E/A-Vorgänge über eine mehrphasige Ereignisschleife (Timer, verzögerte Rückrufe, Abfrage, Prüfung ...) an den Kernel – aber jede synchrone Berechnung in diesem Thread, einschließlich eines Garbage-Collection-Durchlaufs von der V8-Engine, blockiert die Ausführung während der Ausführung (offizielle Node.js-Dokumentation, nodejs.org, abgerufen im August 24, 2026). Dies ist ein Unterschied im Speichermodell, kein Implementierungsdetail.

#
Die Nuance

Die eigentliche Überraschung: Die Laufzeit wiegt genauso viel wie die Sprache

Das kontraintuitivste Ergebnis derselben Bank betrifft nicht Rust: Es betrifft Node.js selbst. Express – ein und derselbe Code, ein und dieselbe API – geht von 5.766 req/s auf Node.js auf 18.917 req/s auf Bun, ein Faktor von ×3,3, ohne eine Zeile Anwendungscode zu ändern (Sharkbench, 24. August 2025).

Express-Durchsatz gemäß JavaScript-Laufzeit im Vergleich zu AxumAxum auf Rust: 21.030 req/s. Express auf Brötchen: 18.917 req/s. Express auf Deno: 6.088 req/s. Express auf Node.js: 5.766 Anforderungen/s. In allen drei Fällen derselbe Express-Code. Quelle: Sharkbench, 24. August 2025.05k10k15k20kAxum (Rust, Referenz)21 030Express auf Brötchen18 917Express auf Deno6 088Express auf Node.js5 766

Quelle: Sharkbench, 24. August 2025 – gleicher Express-Code, drei JavaScript-Laufzeiten.

Auf Deno ist derselbe Express-Code auf 6.088 req/s begrenzt – nahe an Node.js, weit entfernt von Bun. Die JavaScript-Sprache ist in allen drei Fällen identisch; Es ist die Laufzeit – ihre JS-Engine, ihre Event-Loop-Implementierung, ihre Garbage Collection – die das Spiel verändert. Der Vergleich von „Rust“ mit „Node.js“ ohne Angabe von Laufzeit, Version und Framework ist wie ein Vergleich von Konfigurationen, nicht von Sprachen.

Und das alles mitmachen?

Auf derselben Bank erreicht das Go Gin-Framework seinen Spitzenwert bei 3.546 Req/s, wenn FastHTTP – immer noch in Go – auf 5.567 Req/s mit einer Latenz von nur 0,7 ms ansteigt (Sharkbench, 24. August 2025). Zwei sehr unterschiedliche Ergebnisse für eine einzelne Sprache: Eine isolierte Zahl fasst niemals ein gesamtes Ökosystem zusammen.

#
Methodik

Warum eine einzige Benchmark-Zahl nie ausreicht

Die TechEmpower Framework Benchmarks veranschaulichen die gleiche Idee in größerem Maßstab. Sein Open-Source-Repository wurde am 24. März 2026 aktualisiert und seine letzte Runde (Runde 23) war Gegenstand eines Beitrags vom 16. März 2026 (TechEmpower, abgerufen am 24. August 2026). Dieses Projekt führt viele Arten von Tests für Hunderte von Implementierungen durch, gerade weil ein einzelner Test niemals ein Framework darstellt, geschweige denn eine Sprache.

Convex, ein Akteur auf dem Datenbankmarkt, hat die klarste Position zu diesem Thema formuliert: die Weigerung, sich am Marketing-„Balkendiagrammkrieg“ zwischen konkurrierenden Datenbanken zu beteiligen, der als irreführend erachtet wird. „Es ist Skalierungstheater, nicht Skalierung“, schreibt das Team (Convex, abgerufen am 24. August 2026). Wir teilen diese Lesart: Eine bloße Zahl ohne veröffentlichte Methodik beweist nichts – weder für einen Konkurrenten noch für uns.

Was es konkret ändert: Hardware (CPU, RAM), genaue Version des Frameworks und der Laufzeit, Größe der JSON-Payload, Grad der Konkurrenz und Dauer des Tests – all das beeinflusst das Ranking – manchmal mehr als die Wahl der Sprache selbst. Eine Bank, die diese Parameter nicht veröffentlicht, reproduziert sich nicht und verifiziert sich daher nicht selbst – sehen Sie sich unsere vollständige und reproduzierbare Methodik zum Benchmarking einesBackends an.

#
Aurabase

Und Aurabase in all dem?

Das Kern-Backend von Aurabase ist in Rust geschrieben, auf axum und tokio – überprüft im Cargo.toml des Monorepos: Zehn Dienste (aura-gateway, aura-auth, aura-db…) teilen in der Ausgabe 2021 die gleiche Arbeitsbereichsabhängigkeit axum (0.8) und die gleiche Laufzeit tokio. Das Gateway, das den Datenebenen- und Managementebenenverkehr weiterleitet, basiert zusätzlich zu axum auf hyper – die vollständigen Details finden Sie in unserem Artikel über , die Datenebenen-/Managementebenenarchitektur des Gateways. Die Struktur des Cargo-Arbeitsbereichs, der diese zehn Dienste unterstützt, ist in unserem Artikel über den Cargo-Arbeitsbereichdokumentiert.

Was wir noch nicht haben, ist eine veröffentlichte Aurabase-Durchsatz- oder Latenzzahl mit dokumentierter Methodik und Hardware. Dies ist Absicht: Wir veröffentlichen die Methodik lieber vor der Abbildung und nicht umgekehrt – dies ist das Thema eines zukünftigen Artikels in dieser Reihe.

Den vollständigen Architekturvergleich – einheitlicher Rust-Kern bei Aurabase im Vergleich zum heterogenen Stack Elixir/Go/TypeScript/Node, dokumentiert bei einem direkten Konkurrenten – finden Sie in unserem detaillierten Vergleich Aurabase vs. Supabase. Wenn Sie bereits ein Projekt migrieren, deckt der Migrationsleitfaden Supabase zu Aurabase das Schema, die RLS-Richtlinien und das SDK ab.

#
Daten

Anhang: vollständige Datentabelle

Alle in diesem Artikel zitierten Zeilen, veröffentlicht von Sharkbench am 24. August 2025 (Docker/Linux, Ryzen 7 7800X3D).

RahmenLaufzeitAnfrage/nLatenzErinnerung
ActixRost21 9651,4 ms16,6 MB
HyperRost21 7811,5 ms8,6 MB
AxumRost21 0301,6 ms8,5 MB
RaketeRost18 0471,7 ms6,4 MB
FastenNode.js9 3403,4 ms57,0 MB
KoaNode.js8 8283,6 ms53,3 MB
ExpressNode.js5 7665,5 ms82,5 MB
ExpressBrötchen18 9171,3 ms53,3 MB
ExpressDeno6 0885,0 ms130,7 MB
GinGeh3 5461,0 ms16,7 MB
FastHTTPGeh5 5670,7 ms13,4 MB

Zitieren Sie diese Daten: Sharkbench, „Web Framework Benchmarks“, sharkbench.dev/web, zuletzt aktualisiert am 24. August 2025.

#
FAQs

Häufig gestellte Fragen

Bedeutet das, dass Node.js eine schlechte Wahl ist?+
Nein. Node.js bleibt für viele Backends eine solide Wahl, insbesondere wenn das Team bereits mit TypeScript vertraut ist und die Last nicht von der CPU-Rechenleistung dominiert wird. Die hier gemessene Lücke betrifft den Rohdurchsatz und die Latenz bei starker Konkurrenz – nicht die Entwicklungsproduktivität oder das Paket-Ökosystem. Auf Bun ist der Abstand zu Rust deutlich kleiner (18.917 req/s für Express im Vergleich zu 21.030 für Axum): Die Wahl der Laufzeit ist genauso wichtig wie die Wahl der Sprache.
Warum ist Express im Vergleich zu anderen Node.js-Frameworks so langsam?+
Auf dieser Bank ist Express (5.766 req/s auf Node.js) das langsamste der getesteten Node.js-Frameworks, hinter Koa (8.828) und Fastify (9.340). Express stammt aus dem Jahr 2010 und sein Design bevorzugt die Einfachheit der Middleware und nicht den reinen Durchsatz. Gleichzeitig entsteht durch die Wahl des Frameworks bereits eine Lücke von ×1,6 zwischen Express und Fastify (Sharkbench, 24. August 2025).
Wie wurde dieser Benchmark erreicht und können wir ihn reproduzieren?+
Die in diesem Artikel zitierte Benchmark stammt von Sharkbench, einem unabhängigen Community-Projekt, das gleichzeitige HTTP-Anfragen, I/O und JSON-Serialisierung unter Docker/Linux auf einem Ryzen 7 7800X3D testet, mit einem letzten öffentlichen Update am 24. August 2025 (sharkbench.dev/web). Dies ist kein Aurabase-Prüfstand – wir haben ihn weder selbst ausgeführt noch validiert; Wir zitieren ihn, weil seine Methodik und Materialien im Gegensatz zu vielen anderen Marketingfiguren veröffentlicht werden.
Hat Aurabase eigene Benchmarks veröffentlicht?+
Nein, bisher nicht. Der Rust/Axum/Tokio-Kern von Aurabase ist im Monorepo-Quellcode verifiziert, es wurden jedoch keine Aurabase-spezifischen Durchsatz- oder Latenzzahlen gemessen und veröffentlicht. Dieser Artikel vergleicht Rust und Node.js im Allgemeinen, basierend auf Bänken von Drittanbietern – dies ist kein Vergleich von Aurabase mit einem Konkurrenten.
Welchen Unterschied macht ein Unterschied in Durchsatz und Speicher für die Infrastrukturrechnung?+
Auf der zitierten Bank verbraucht Axum 8,5 MB Speicher im Vergleich zu 82,5 MB für Express auf Node.js – ein Faktor nahe ×10 (Sharkbench, 24. August 2025). Weniger Speicher pro Instanz und mehr verarbeitete Anfragen pro CPU-Kern ermöglichen es, bei gleichem Datenverkehr die gleiche Last mit weniger oder kleineren Instanzen zu halten. Die tatsächliche Auswirkung hängt jedoch von Ihrem Lastprofil (I/O-gebunden oder CPU-gebunden) und Ihrem Cloud-Anbieter ab – diese Zahl ist kein automatisches Sparversprechen.
#
Fazit

Woran Sie sich erinnern sollten

Auf der hier zitierten Benchmark laufen die Rust-Frameworks alle in einem engen Bereich – 18.000 bis 22.000 Req/s, 1,4–1,7 ms – weit vor den Node.js-Frameworks auf Node.js selbst (5.766–9.340 Req/s, 3,4–5,5 ms). Aber die Laufzeit verändert die Situation ebenso wie die Sprache: Express auf Bun holt Axum auf Rust fast ein.

Wenn Sie ein Backend allein anhand der reinen Leistung bewerten, müssen Sie die Methodik vor der Zahl angeben: Hardware, Version, Nutzlastgröße, Wettbewerbsgrad. Aurabase hat noch keine eigenen Zahlen veröffentlicht; Wenn dies der Fall ist, wird die Methodik an erster Stelle stehen.

BEREIT ZUM EINSATZ?

Ihr Backend in fünf Minuten.

Keine Kreditkarte erforderlich · 500 MB kostenlos · 50.000 MAU