رفتن به محتوا

بنچمارک‌ها

داده‌های به‌روز: این بنچمارک‌ها در مارس ۲۰۲۶ با استفاده از Gin v1.12.0 و Go 1.25.8 جمع‌آوری شده‌اند. برای مشاهده نتایج به‌روز بنچمارک، مخزن go-http-routing-benchmark را ببینید.

گزارش بنچمارک Gin

محیط آزمایش:

  • پلتفرم میزبان: Apple M4 Pro
  • مشخصات دستگاه: macOS (Darwin 25.3.0), arm64
  • تاریخ آزمایش: ۱۵ مارس ۲۰۲۶
  • نسخه Gin: v1.12.0
  • نسخه Go: 1.25.8 (darwin/arm64)
  • منبع بنچمارک‌ها: Go HTTP Router Benchmark

خلاصه

جدول زیر تمام مسیریاب‌ها را بر اساس توان عملیاتی GitHub API (۲۰۳ مسیر، تمام متدها) رتبه‌بندی می‌کند که بهترین نمایانگر بارهای کاری واقعی مسیریابی است. مقدار 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 در رده بالا قرار دارند — همگی بدون تخصیص حافظه heap عمل می‌کنند و کل GitHub API را در حدود ۱۰ میکروثانیه مسیریابی می‌کنند.
  • HttpRouter همچنان بسیار سریع است اما به ازای هر مسیر پارامتردار ۱ تخصیص حافظه دارد (۱۶۷ تخصیص برای ۲۰۳ مسیر).
  • Fiber نیز بدون تخصیص حافظه عمل می‌کند، اما زیرساخت بنچمارک مبتنی بر fasthttp آن، سربار بازنشانی در هر تکرار اضافه می‌کند — مقایسه مستقیم با مسیریاب‌های net/http نیازمند احتیاط است.
  • GorillaMux و GoRestful از نظر قابلیت‌ها غنی هستند اما مرتبه‌هایی کندتر عمل می‌کنند و برای برنامه‌های حساس به تأخیر مناسب نیستند.

نکته درباره Fiber: بنچمارک‌های Fiber از fasthttp.RequestCtx با بازنشانی در هر تکرار استفاده می‌کنند که سربار ثابتی اضافه می‌کند که در بنچمارک‌های 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 (۲۰۳ مسیر)

مسیریابی تمام ۲۰۳ نقطه پایانی 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 (۱۳ مسیر)

مسیریابی تمام ۱۳ نقطه پایانی 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 (۲۶ مسیر)

مسیریابی تمام ۲۶ نقطه پایانی 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

مسیرهای ثابت (۱۵۷ مسیر)

مسیریابی تمام ۱۵۷ مسیر ثابت در هر عملیات. شامل 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

۵ پارامتر

مسیر: /: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

۲۰ پارامتر

مسیر: /:a/:b/.../:t (۲۰ بخش) — درخواست: 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