Lewati ke konten

Benchmark

Data Terbaru: Benchmark ini dikumpulkan pada Maret 2026 menggunakan Gin v1.12.0 dan Go 1.25.8. Untuk hasil benchmark terkini, lihat repositori go-http-routing-benchmark.

Laporan Benchmark Gin

Lingkungan Pengujian:

  • Platform Host: Apple M4 Pro
  • Spesifikasi Mesin: macOS (Darwin 25.3.0), arm64
  • Tanggal Pengujian: 15 Maret 2026
  • Versi Gin: v1.12.0
  • Versi Go: 1.25.8 (darwin/arm64)
  • Sumber Benchmark: Go HTTP Router Benchmark

Ringkasan

Tabel di bawah ini mengurutkan semua router berdasarkan throughput GitHub API (203 rute, semua metode), yang paling merepresentasikan beban kerja routing di dunia nyata. Nilai ns/op yang lebih rendah lebih baik.

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

Poin-poin penting:

  • Gin, BunRouter, dan Echo membentuk tier teratas — ketiganya mencapai nol alokasi heap dan merutekan seluruh GitHub API dalam waktu sekitar 10 mikrodetik.
  • HttpRouter tetap sangat cepat tetapi memerlukan 1 alokasi per rute berparameter (167 alokasi untuk 203 rute).
  • Fiber juga mencapai nol alokasi, tetapi infrastruktur benchmark berbasis fasthttp-nya menambahkan overhead reset per-iterasi — perbandingan langsung dengan router net/http perlu dilakukan dengan hati-hati.
  • GorillaMux dan GoRestful kaya fitur tetapi jauh lebih lambat secara signifikan, sehingga kurang cocok untuk aplikasi yang sensitif terhadap latensi.

Catatan tentang Fiber: Benchmark Fiber menggunakan fasthttp.RequestCtx dengan Reset per-iterasi, yang menambahkan overhead konstan yang tidak ada pada benchmark net/http. Perbandingan Fiber-vs-Fiber valid; perbandingan lintas framework harus diinterpretasikan dengan hati-hati.


Konsumsi Memori

Memori yang dibutuhkan untuk memuat struktur routing (lebih rendah lebih baik). Diurutkan berdasarkan byte secara menaik.

Rute Statis: 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

Rute 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

Rute 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

Rute 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

Hasil Benchmark

GitHub API (203 rute)

Merutekan seluruh 203 endpoint GitHub API per operasi.

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 rute)

Merutekan seluruh 13 endpoint Google+ API per operasi.

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 rute)

Merutekan seluruh 26 endpoint Parse API per operasi.

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

Rute Statis (157 rute)

Merutekan seluruh 157 rute statis per operasi. Menyertakan http.ServeMux sebagai baseline.

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

Micro Benchmark

Parameter Tunggal

Rute: /user/:name — Permintaan: 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 Parameter

Rute: /:a/:b/:c/:d/:e — Permintaan: 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 Parameter

Rute: /:a/:b/.../:t (20 segmen) — Permintaan: 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

Penulisan Parameter

Rute: /user/:name dengan penulisan respons — Permintaan: 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