跳转到内容

基准测试

更新数据: 这些基准测试于 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 之间的比较是有效的;跨框架的比较需要谨慎解读。


内存消耗

加载路由结构所需的内存(越低越好)。按字节升序排列。

Static Routes: 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 Routes: 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 Routes: 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 Routes: 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