PROD欧州主権の BaaS プラットフォームダッシュボードを開く →

パフォーマンス · 12 分読み取り

Rust vs Node.js: バックエンドのベンチマークとレイテンシー

Affane Daylami · Fondateur · 2026年7月5日

ブログに戻る

2025 年 8 月に更新された独立したコミュニティ ベンチでは、Rust フレームワークはすべて、1.4 ~ 1.7 ミリ秒のレイテンシで 1 秒あたり 18,000 ~ 22,000 リクエストを実行します。同等の Node.js フレームワークは、同じハードウェア上で 5,766 ~ 9,340 req/s、3.4 ~ 5.5 ミリ秒に制限されます (Sharkbench、2025 年 8 月 24 日)。

この英語のテキストはフランス語のオリジナルから自動的に生成されたもので、まだレビューされていません。
このページは自動翻訳されました。英語版が正式です。

このベンチは私たち自身で運営したものではありません。これらはサードパーティの数値であり、公開されており、情報源と日付が記載されています。この記事では、Aurabase と競合他社の比較ではなく、彼らの主張、その背後にある方法論、バックエンドの選択によって実際に何が変わるのかについて詳しく説明します。

Aurabase のコアは、axum および tokio 上で Rust で実行されます。モノリポジトリの Cargo.toml で検証されており、10 個のサービスが同じ依存関係を共有しています。しかし、これまでのところ当社独自の業績数値は公表していません。正確な Aurabase レイテンシーを探している場合、それはまだ存在しません。数値よりも方法論が優先され、その逆はありません。

必需品

  • Sharkbench (コミュニティ ベンチ、Ryzen 7 7800X3D、Docker/Linux、2025 年 8 月 24 日): Actix、Hyper、Axum、Rocket はすべて、1.4 ~ 1.7 ミリ秒で 18,047 ~ 21,965 req/s で実行されています。 Fastify、Koa、および Express は、Node.js 側で 5,766 ~ 9,340 req/s の上限を 3.4 ~ 5.5 ミリ秒に設定します。
  • ランタイムは言語と同じくらい重要です。同じ Express コードは、行を変更することなく、Node.js の 5,766 req/s から Bun の 18,917 req/s に 3.3 倍になります。
  • メモリ ギャップが最も明確です。Axum では 8.5 MB、Express/Node.js では 82.5 MB です。これは、Rust のガベージ コレクターがないことと一致しています。
  • Aurabase はこれまでのところ、独自のベンチマークを公開していません。 Rust/axum/tokio コアは、パフォーマンスではなくコードでチェックされます。
  • 個別の数字は何も証明しません。言語だけよりも、ハードウェア、フレームワークのバージョン、ペイロード サイズ、競争のレベルによってランキングが変動します。
#
ベンチ

最近のサードパーティベンチが示していること

Sharkbench は、同時 HTTP リクエスト、I/O 操作、JSON シリアル化を処理するフレームワークの能力という 3 つのことを測定する独立したコミュニティ プロジェクトです。このテストは、Ryzen 7 7800X3D 上の Docker/Linux で実行され、最後の公開アップデートは 2025 年 8 月 24 日です (sharkbench.dev/web、2026 年 8 月 24 日にアクセス)。

1 秒あたりのリクエストのスループット、Rust と Node.jsActix (Rust) 21,965 req/s、Hyper (Rust) 21,781 req/s、Axum (Rust) 21,030 req/s、Rocket (Rust) 18,047 req/s、Fastify (Node.js) 9,340 req/s、Koa (Node.js) 8,828 req/s、 Express (Node.js) 5,766 リクエスト/秒。出典: Sharkbench、2025 年 8 月 24 日。05k10k15k20kActix (Rust)21 965ハイパー(錆び)21 781アクスム(錆び)21 030ロケット(錆び)18 047Fastify (Node.js)9 340コア (Node.js)8 828エクスプレス (Node.js)5 766

出典: Sharkbench、2025 年 8 月 24 日 — Docker/Linux、Ryzen 7 7800X3D。

Axum — Aurabase が Rust コアに使用するフレームワーク (Cargo.toml で検証済み) — このベンチでは 1 秒あたり 21,030 リクエストを処理します。本番環境で最もよく使用されている Node.js フレームワークである Express は、同じハードウェア上で 5,766 を処理します (係数 3.6)。これは特別なケースではありません。テストされた 4 つの Rust フレームワークはすべて 18,000 ~ 22,000 req/s の狭い範囲内に収まりましたが、テストされた 3 つの Node.js フレームワークの上限は 5,766 ~ 9,340 でした。

実際には、「req/s」は、トラフィックの少ないサイトでの個別のリクエストの速度ではなく、持続的な同時負荷の下でのスループットを測定します。数秒ごとに呼び出されるエンドポイントでは、違いは見られません。これは、ホット エンドポイント (リアルタイム フロー、大量のトラフィックを伴うパブリック API、数千件の呼び出しをつなぎ合わせるジョブ) で決定的になります。同じハードウェアの場合、CPU コアごとに処理されるリクエストの数がインフラストラクチャの請求額を直接決定します。

#
レイテンシ

レイテンシも同じパターンに従います

平均レイテンシは、このベンチでも同じ階層に従います。テストされた Node.js フレームワークの 3.4 ~ 5.5 ミリ秒と比較して、テストされた Rust フレームワークの場合は 1.4 ~ 1.7 ミリ秒です。

ミリ秒単位の平均レイテンシ、Rust と Node.js の比較Actix (Rust) 1.4 ミリ秒、Hyper (Rust) 1.5 ミリ秒、Axum (Rust) 1.6 ミリ秒、Rocket (Rust) 1.7 ミリ秒、Fastify (Node.js) 3.4 ミリ秒、Koa (Node.js) 3.6 ミリ秒、Express (Node.js) 5.5 ミリ秒。出典: Sharkbench、2025 年 8 月 24 日。0ミリ秒1ミリ秒2ミリ秒3ミリ秒4ミリ秒5ミリ秒Actix (Rust)1.4ミリ秒ハイパー(錆び)1.5ミリ秒アクスム(錆び)1.6ミリ秒ロケット(錆び)1.7ミリ秒Fastify (Node.js)3.4ミリ秒コア (Node.js)3.6ミリ秒エクスプレス (Node.js)5.5ミリ秒

出典: Sharkbench、2025 年 8 月 24 日 — 中程度のレイテンシー、p99 ではありません。

この数値は平均値であり、p99 ではありません。マネージド ランタイムでのガベージ一時停止は、主にディスパッチ キュー (中央値ではなく、最も遅いリクエスト) に影響します。これは、このシリーズの専用記事の主題です: ガベージ コレクターの不在により p99 レイテンシーが変化する理由。

#
なぜ

Rust には GC ブレークを支払わない理由

Rust はコンパイル時にチェックされる所有権によってメモリを管理します。バックグラウンドで実行されて実行を中断するガベージ コレクターはありません。公式の Rust Book は次のように要約しています: 「所有権の機能のどれも、実行中にプログラムの速度を低下させることはありません」 (The Rust Programming Language、doc.rust-lang.org、2026 年 8 月 24 日にアクセス)。メモリは、それを所有する変数がスコープ外になるとすぐに解放されます。これは、実行時の予測できない一時停止ではなく、コンパイル時の既知の時点です。

ownership.rsrust
fn main() {
    let data = String::from("réponse API"); // `data` は文字列を所有します
    process(data); // 所有権はここから離れます
    // ここでは「data」はもう有効ではありません - ダングリング ポインタも二重解放もありません
} // 「データ」はここで決定的にリリースされます

fn process(s: String) {
    println!("{s}");
} // ここでは「s」は範囲外になります: 即時リリース、ガベージ コレクション パスなし

逆に、Node.js は単一の JavaScript スレッドで実行され、マルチフェーズ イベント ループ (タイマー、遅延コールバック、ポーリング、チェックなど) を介して I/O 操作をカーネルに委任します。ただし、V8 エンジンからのガベージ コレクション パスを含むそのスレッド上の同期計算は、実行中に実行をブロックします (公式 Node.js ドキュメント、 nodejs.org、2026 年 8 月 24 日にアクセス)。これはメモリ モデルの違いであり、実装の詳細ではありません。

#
ニュアンス

本当に驚いたのは、ランタイムの重みが言語と同じくらいであるということです。

同じベンチから得られた最も直観に反する結果は、Rust に関するものではなく、Node.js 自体に関するものです。 Express — まったく同じコード、まったく同じ API — は、アプリケーション コードの行を変更することなく、Node.js の 5,766 req/s から Bun の 18,917 req/s まで、係数 3.3 に達します (Sharkbench、2025 年 8 月 24 日)。

Axum と比較した、JavaScript ランタイムに基づく高速スループットRust の Axum: 21,030 リクエスト/秒。バンのエクスプレス: 18,917 リクエスト/秒。 Deno でのエクスプレス: 6,088 リクエスト/秒。 Node.js 上の Express: 5,766 req/秒。 3 つのケースすべてで同じ Express コードです。出典: Sharkbench、2025 年 8 月 24 日。05k10k15k20kAxum (Rust、リファレンス)21 030エクスプレス・オン・バン18 917デノの急行6 088Node.js 上の Express5 766

出典: Sharkbench、2025 年 8 月 24 日 — 同じ Express コード、3 つの JavaScript ランタイム。

Deno では、この同じ Express コードの上限は 6,088 req/s であり、Bun には遠く及ばず、Node.js に近い値です。 JavaScript 言語は 3 つのケースすべてで同じです。ゲームを変えるのはランタイム (JS エンジン、イベント ループ実装、ガベージ コレクション) です。ランタイム、バージョン、フレームワークを指定せずに「Rust」と「Node.js」を比較することは、言語ではなく構成を比較するようなものです。

そして、このすべてに参加しますか?

この同じベンチでは、FastHTTP (まだ Go の状態) がわずか 0.7 ミリ秒のレイテンシーで 5,567 req/s まで上昇するとき、Go Gin フレームワークは 3,546 req/s でピークに達します (Sharkbench、2025 年 8 月 24 日)。単一言語に対する 2 つのまったく異なる結果: 孤立した図がエコシステム全体を要約することはありません。

#
方法論

単一のベンチマーク数値では決して十分ではない理由

TechEmpower Framework Benchmarks は、同じ考え方をより大きなスケールで示しています。そのオープンソース リポジトリは 2026 年 3 月 24 日に更新され、その最新のラウンド (ラウンド 23) は 2026 年 3 月 16 日の投稿の対象となりました (TechEmpower、2026 年 8 月 24 日にアクセス)。このプロジェクトでは、数百の実装に対してさまざまな種類のテストを実行します。これは、単一のテストが言語はおろかフレームワークを表すことは決してないためです。

データベース市場のプレーヤーである Convex は、この件に関して最も明確な立場を表明しています。競合するデータベース間のマーケティング「棒グラフ戦争」への参加は誤解を招くと考えられ、参加を拒否します。 「スケーリングではなく、スケーリング劇場です」、チームはこう書いています (Convex、2026 年 8 月 24 日にアクセス)。私たちもこの考えを共有しています。公開された方法論のない裸の数字は、競合他社にとっても、私たちにとっても、何も証明しません。

What it changes in concrete terms: hardware (CPU, RAM), exact version of the framework and runtime, size of the JSON payload, level of competition and duration of the test all vary the ranking — sometimes more than the choice of language itself. A bench that does not publish these parameters does not reproduce, therefore does not verify itself — see our complete and reproducible methodology for benchmarking abackend.

#
オーラベース

オーラベースもこれに含まれますか?

The core backend of Aurabase is written in Rust, on axum and tokio — checked in the Cargo.toml of the monorepo: ten services (aura-gateway, aura-auth, aura-db…) share the same workspace dependency axum (0.8) and the same runtime tokio, in 2021 edition. The gateway which routes data plane and management plane traffic relies on hyper in addition to axum — the full details are in our article on the data plane / management plane architecture of the gateway. The structure of the Cargo workspace that supports these ten services is documented in our article on the Cargo workspace.

まだ公開されていないのは、文書化された方法論とハードウェアを伴う Aurabase のスループットまたはレイテンシの数値です。これは意図的なものです。私たちは、その逆ではなく、図の前に方法論を公開することを好みます。これは、このシリーズの将来の記事の主題です。

アーキテクチャの完全な比較 (Aurabase の統合 Rust コアと、直接の競合他社で文書化された異種スタックの Elixir/Go/TypeScript/Node) については、詳細な比較 Aurabase と Supabaseを参照してください。すでにプロジェクトを移行している場合は、Supabase から Aurabase への移行ガイド でスキーマ、RLS ポリシー、SDK について説明しています。

#
データ

付録: 完全なデータ表

この記事で引用されているすべての行は、2025 年 8 月 24 日に Sharkbench によって公開されたものです (Docker/Linux、Ryzen 7 7800X3D)。

フレームワークランタイムリクエストレイテンシ記憶
アクティックスさび21 9651.4ミリ秒16.6MB
ハイパーさび21 7811.5ミリ秒8.6MB
アクスムさび21 0301.6ミリ秒8.5MB
ロケットさび18 0471.7ミリ秒6.4MB
高速化Node.js9 3403.4ミリ秒57.0MB
コアNode.js8 8283.6ミリ秒53.3MB
急行Node.js5 7665.5ミリ秒82.5MB
急行バン18 9171.3ミリ秒53.3MB
急行デノ6 0885.0ミリ秒130.7MB
ジン行く3 5461.0ミリ秒16.7MB
高速HTTP行く5 5670.7ミリ秒13.4MB

次のデータを引用します: Sharkbench、「Web Framework Benchmarks」、sharkbench.dev/web、最終更新日は 2025 年 8 月 24 日です。

#
よくある質問

よくある質問

これは、Node.js が間違った選択であることを意味しますか?+
いいえ。Node.js は多くのバックエンドにとって、特にチームがすでに TypeScript に習熟していて、負荷が CPU コンピューティングによって支配されていない場合には、依然として堅実な選択肢です。ここで測定されるギャップは、開発の生産性やパッケージ エコシステムではなく、激しい競争下での生のスループットとレイテンシーにあります。 Bun では、Rust との差が大幅に縮まっています (Express では 18,917 req/s、Axum では 21,030 req/s)。ランタイムの選択は言語の選択と同じくらい重要です。
Express が他の Node.js フレームワークと比べて非常に遅いのはなぜですか?+
このベンチでは、Express (Node.js で 5,766 req/s) が、テストした Node.js フレームワークの中で最も遅く、Koa (8,828) と Fastify (9,340) に次ぎます。 Express は 2010 年に誕生し、その設計は生のスループットよりもミドルウェアのシンプルさを重視しています。同じ実行時に、フレームワークの選択により、Express と Fastify の間にはすでに × 1.6 の差が生じています (Sharkbench、2025 年 8 月 24 日)。
このベンチマークはどのようにして達成されたのでしょうか?また、それを再現できるでしょうか?+
この記事で引用されているベンチは、Ryzen 7 7800X3D 上の Docker/Linux で同時 HTTP リクエスト、I/O、JSON シリアル化をテストする独立コミュニティ プロジェクトである Sharkbench からのもので、最終公開アップデートは 2025 年 8 月 24 日 (sharkbench.dev/web) です。これは Aurabase ベンチではありません。私たちはそれを自分たちで実行したり検証したりしていません。私たちが彼を引用するのは、多くのマーケティング関係者とは異なり、彼の方法論と資料が出版されているからです。
Aurabase は独自のベンチマークを公開していますか?+
いいえ、デートではありません。 Aurabase の Rust/axum/tokio コアは monorepo ソースコードで検証されていますが、Aurabase 固有のスループットやレイテンシの数値は測定および公開されていません。この記事では、サードパーティのベンチに基づいて、Rust と Node.js を一般的に比較します。これは、Aurabase と競合他社との比較ではありません。
スループットとメモリの違いは、インフラストラクチャの請求額にどのような違いをもたらしますか?+
引用されたベンチでは、Node.js 上の Express の 82.5 MB と比較して、Axum は 8.5 MB のメモリを消費します。これは 10 倍に近い係数です (Sharkbench、2025 年 8 月 24 日)。インスタンスごとのメモリが減り、CPU コアごとに処理されるリクエストが増えるため、トラフィックが等しい場合、インスタンスの数が少なくても同じ負荷を保持できるようになります。ただし、実際の影響は、負荷プロファイル (I/O バウンドまたは CPU バウンド) とクラウド プロバイダーによって異なります。この数字は、自動的に節約されることを保証するものではありません。
#
結論

覚えておくべきこと

ここで引用されているベンチでは、Rust フレームワークはすべて狭い範囲 (18,000 ~ 22,000 req/s、1.4 ~ 1.7 ミリ秒) で実行され、Node.js 自体の Node.js フレームワーク (5,766 ~ 9,340 req/s、3.4 ~ 5.5 ミリ秒) よりもはるかに優れています。しかし、ランタイムは言語と同じくらい状況を変えます。Bun 上の Express は Rust 上の Axum にほぼ追いつきます。

バックエンドを生のパフォーマンスのみで評価する場合は、ハードウェア、バージョン、ペイロード サイズ、競合レベルなどの数値の前に方法論が必要です。 Aurabase はまだ独自の数値を発表していません。そうなると、まず方法論が優先されます。

導入の準備はできていますか?

5 分でバックエンドが完成します。

クレジット カードは不要 · 500 MB 無料 · 50,000 MAU