컨텐츠로 건너뛰기

벤치마크

업데이트된 데이터: 이 벤치마크는 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는 최상위 그룹을 형성하며, 모두 힙 할당이 0이고 전체 GitHub API를 약 10마이크로초 만에 라우팅합니다.
  • HttpRouter는 매우 빠르지만 매개변수화된 라우트당 1회 할당이 발생합니다 (203개 라우트에서 167회 할당).
  • Fiber도 할당 0을 달성하지만, fasthttp 기반 벤치마크 인프라가 반복당 리셋 오버헤드를 추가하므로 net/http 라우터와의 직접 비교는 주의가 필요합니다.
  • GorillaMuxGoRestful은 기능이 풍부하지만 수 배 느려서 지연 시간에 민감한 애플리케이션에는 적합하지 않습니다.

Fiber 주의사항: Fiber 벤치마크는 반복마다 Reset을 수행하는 fasthttp.RequestCtx를 사용하며, 이는 net/http 벤치마크에는 없는 일정한 오버헤드를 추가합니다. 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