跳到內容

基準測試

更新資料: 這些基準測試於 2026 年 3 月使用 Gin v1.12.0 和 Go 1.25.8 收集。如需最新的基準測試結果,請參閱 go-http-routing-benchmark 儲存庫。

Gin 基準測試報告

測試環境:

  • 主機平台: Apple M4 Pro
  • 機器規格: macOS (Darwin 25.3.0), arm64
  • 測試日期: 2026 年 3 月 15 日
  • Gin 版本: v1.12.0
  • Go 版本: 1.25.8 (darwin/arm64)
  • 基準測試來源: Go HTTP Router Benchmark

摘要

下表依據 GitHub API 吞吐量(203 條路由,所有方法)對所有路由器進行排名,這最能代表真實世界的路由工作負載。ns/op 越低越好。

RankRouterns/opB/opallocs/opZero-alloc
1Gin9,94400
2BunRouter10,28100
3Echo11,07200
4HttpRouter15,05913,792167
5HttpTreeMux49,30265,856671
6Chi94,376130,817740
7Beego101,94171,456609
8Fiber109,14800
9Macaron121,785147,7841,624
10Goji v2242,849313,7443,712
11GoRestful885,6781,006,7443,009
12GorillaMux1,316,844225,6671,588

關鍵要點:

  • Gin、BunRouter 和 Echo 構成第一梯隊——三者皆達成零堆積記憶體配置,並在約 10 微秒內完成完整 GitHub API 的路由。
  • HttpRouter 仍然極為快速,但每個帶參數的路由會產生 1 次記憶體配置(203 條路由共 167 次配置)。
  • Fiber 同樣達成零配置,但其基於 fasthttp 的基準測試基礎架構會在每次迭代時增加重設開銷——與 net/http 路由器的直接比較需要謹慎解讀。
  • GorillaMuxGoRestful 功能豐富,但速度慢了數個數量級,使其較不適合對延遲敏感的應用程式。

Fiber 注意事項: Fiber 基準測試使用 fasthttp.RequestCtx 並在每次迭代時執行 Reset,這會增加 net/http 基準測試中不存在的固定開銷。Fiber 與 Fiber 之間的比較是有效的;跨框架比較則需謹慎解讀。


記憶體消耗

載入路由結構所需的記憶體(越低越好)。依位元組數升序排列。

靜態路由:157 條

RouterBytes
HttpRouter21,680
Gin34,408
Macaron36,976
BunRouter51,232
Fiber59,248
HttpServeMux71,728
HttpTreeMux73,448
Chi83,160
Echo91,976
Beego98,824
Goji v2117,952
GorillaMux599,496
GoRestful819,704

GitHub API 路由:203 條

RouterBytes
HttpRouter37,072
Gin58,840
HttpTreeMux78,800
Macaron90,632
BunRouter93,776
Chi94,888
Echo117,784
Goji v2118,640
Beego150,840
Fiber163,832
GoRestful1,270,848
GorillaMux1,319,696

Google+ API 路由:13 條

RouterBytes
HttpRouter2,776
Gin4,576
BunRouter7,360
HttpTreeMux7,440
Chi8,008
Goji v28,096
Macaron8,672
Beego10,256
Fiber10,840
Echo10,968
GorillaMux68,000
GoRestful72,536

Parse API 路由:26 條

RouterBytes
HttpRouter5,024
Gin7,896
HttpTreeMux7,848
BunRouter9,336
Chi9,656
Echo13,816
Macaron13,704
Fiber15,352
Goji v216,064
Beego19,256
GorillaMux105,384
GoRestful121,200

基準測試結果

GitHub API(203 條路由)

每次操作路由所有 203 個 GitHub API 端點。

RankRouterns/opB/opallocs/op
1Gin9,94400
2BunRouter10,28100
3Echo11,07200
4HttpRouter15,05913,792167
5HttpTreeMux49,30265,856671
6Chi94,376130,817740
7Beego101,94171,456609
8Fiber109,14800
9Macaron121,785147,7841,624
10Goji v2242,849313,7443,712
11GoRestful885,6781,006,7443,009
12GorillaMux1,316,844225,6671,588

Google+ API(13 條路由)

每次操作路由所有 13 個 Google+ API 端點。

RankRouterns/opB/opallocs/op
1BunRouter348.500
2Gin429.700
3Echo451.100
4HttpRouter668.664011
5HttpTreeMux2,4284,03238
6Fiber2,50600
7Chi5,3338,48048
8Beego5,9274,57639
9Macaron7,2949,464104
10Goji v28,00015,120115
11GorillaMux14,70714,448102
12GoRestful24,18960,720193

Parse API(26 條路由)

每次操作路由所有 26 個 Parse API 端點。

RankRouterns/opB/opallocs/op
1BunRouter588.200
2Gin712.100
3Echo742.100
4HttpRouter948.564016
5HttpTreeMux3,3725,72851
6Fiber4,25000
7Chi8,86314,94484
8Beego10,5419,15278
9Macaron13,63518,928208
10Goji v213,26429,456199
11GorillaMux25,88626,960198
12GoRestful54,780131,728380

靜態路由(157 條路由)

每次操作路由所有 157 條靜態路由。包含 http.ServeMux 作為基準線。

RankRouterns/opB/opallocs/op
1HttpRouter4,17700
2HttpTreeMux5,36300
3Gin5,52800
4BunRouter5,99700
5Echo6,89700
HttpServeMux18,17200
6Fiber29,31000
7Chi41,31757,776314
8Beego68,25555,264471
9Macaron81,824114,2961,256
10Goji v284,459175,8401,099
11GorillaMux302,825133,1371,099
12GoRestful436,510677,8242,193

微觀基準測試

單一參數

路由:/user/:name — 請求:GET /user/gordon

RankRouterns/opB/opallocs/op
1BunRouter12.2200
2Echo17.7500
3Gin23.3100
4HttpRouter31.88321
5Fiber114.400
6HttpTreeMux165.03523
7Chi332.27044
8Beego348.83523
9Goji v2494.31,1368
10GorillaMux630.61,1528
11Macaron708.01,06410
12GoRestful1,3944,60015

5 個參數

路由:/:a/:b/:c/:d/:e — 請求:GET /test/test/test/test/test

RankRouterns/opB/opallocs/op
1BunRouter41.8600
2Echo43.7600
3Gin44.2000
4HttpRouter83.741601
5Fiber271.600
6HttpTreeMux358.85766
7Chi453.77044
8Beego480.33523
9Goji v2532.41,2008
10Macaron799.71,06410
11GorillaMux972.61,2168
12GoRestful1,5794,71215

20 個參數

路由:/:a/:b/.../:t(20 個區段)— 請求:GET /a/b/.../t

RankRouterns/opB/opallocs/op
1Gin121.700
2Echo127.500
3BunRouter211.400
4HttpRouter290.27041
5Fiber466.100
6Goji v2745.31,4408
7Beego1,0993523
8Chi1,8052,5049
9HttpTreeMux1,8573,14413
10Macaron2,0582,86415
11GorillaMux2,2233,27213
12GoRestful3,3377,00820

參數寫入

路由:/user/:name 並回寫回應 — 請求:GET /user/gordon

RankRouterns/opB/opallocs/op
1BunRouter25.8600
2Gin27.6500
3HttpRouter37.40321
4Echo47.9481
5Fiber125.700
6HttpTreeMux180.43523
7Chi348.37044
8Beego386.13604
9Goji v2516.91,16810
10GorillaMux665.51,1528
11Macaron784.31,11213
12GoRestful1,5344,60816