Skip to content

emilioforrer/go-web-framework-benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

bf8fed1 · Oct 6, 2024

History

17 Commits
Oct 6, 2024
Aug 17, 2024
Oct 6, 2024
Aug 26, 2024
Aug 26, 2024
Oct 6, 2024
Aug 26, 2024
Oct 6, 2024
Oct 6, 2024
Aug 31, 2024
Oct 6, 2024
Oct 6, 2024
Oct 6, 2024

Repository files navigation

Becnhmarking Go Web Frameworks

External dependencies

Install dependencies

If you are using Mise to manage your dependencies, you can run the following commands:

# on the project root directory
mise install
mise shell

Frameworks and libraries

Run the benchmark

Run the services:

docker-compose up

In a separate terminal run the benchmark:

task becnhmark

Docker services endpoint responses

All services return the data embedded from internal/data/data.json.

Command used to benchmark all services

oha -j --no-tui -n 120000 -c 1000 -p 500 -z 1m http://localhost:{port}

Results

Results are ordered by Score.

Your find the formula used to calculate the score inside the CalculateScore function in the internal/benchmark/score.go file.

Last benchmark

The last benchmark was run on 2024-10-5.


Specs used (from neofetch --backend off):

OS: Ubuntu 22.04.1 LTS on Windows 10.0.22631 x86_64
Kernel: 5.15.153.1-microsoft-standard-WSL2
Uptime: 8 hours, 25 mins
Packages: 912 (dpkg), 2 (nix-user), 46 (nix-default), 6 (snap)
Shell: bash 5.2.26
Theme: Adwaita [GTK3]
Icons: Adwaita [GTK3]
Terminal: Windows Terminal
CPU: AMD Ryzen 9 6900HX with Radeon Graphics (8) @ 3.293GHz
GPU: Microsoft Corporation Basic Render Driver
Memory: 4619MiB / 20006MiB

Results (output)

Name: go-hertz
Requests Per Second: 49014.10
Aborted Due To Deadline: 427
Successful Requests: 2942476
P99.999 Latency: 116.943425ms
P99 Latency: 43.23109ms
P90 Latency: 29.826613ms
Average Latency: 20.330005ms
Min Latency: 187.9µs
Max Latency: 280.246975ms
Duration: 1m0.041964679s
Memory (MiB): 62.69
CPU (%): 0.02
Network (NetIO - MiB): 5.02
Disk (BlockIO - MiB): 0.00
Performance Score: 5.45
Resource Utilization Score: 6.91
Total Score: 5.98
---------------------------------
Name: go-fiber
Requests Per Second: 46920.83
Aborted Due To Deadline: 285
Successful Requests: 2816494
P99.999 Latency: 201.180092ms
P99 Latency: 61.370151ms
P90 Latency: 34.983864ms
Average Latency: 21.233266ms
Min Latency: 142.389µs
Max Latency: 290.552598ms
Duration: 1m0.032587759s
Memory (MiB): 26.07
CPU (%): 0.02
Network (NetIO - MiB): 4.73
Disk (BlockIO - MiB): 0.00
Performance Score: 3.65
Resource Utilization Score: 8.74
Total Score: 5.50
---------------------------------
Name: go-std-env-test-auto
Requests Per Second: 35757.28
Aborted Due To Deadline: 529
Successful Requests: 2146625
P99.999 Latency: 128.217075ms
P99 Latency: 58.142922ms
P90 Latency: 40.474456ms
Average Latency: 27.845254ms
Min Latency: 172.25µs
Max Latency: 315.070319ms
Duration: 1m0.048024835s
Memory (MiB): 32.72
CPU (%): 0.00
Network (NetIO - MiB): 3.31
Disk (BlockIO - MiB): 0.00
Performance Score: 3.48
Resource Utilization Score: 8.40
Total Score: 5.27
---------------------------------
Name: go-std-env-test-on
Requests Per Second: 34277.61
Aborted Due To Deadline: 703
Successful Requests: 2057279
P99.999 Latency: 138.281197ms
P99 Latency: 61.710264ms
P90 Latency: 42.70273ms
Average Latency: 29.091307ms
Min Latency: 131.688µs
Max Latency: 261.873368ms
Duration: 1m0.038675133s
Memory (MiB): 28.84
CPU (%): 0.00
Network (NetIO - MiB): 3.86
Disk (BlockIO - MiB): 0.00
Performance Score: 3.36
Resource Utilization Score: 8.60
Total Score: 5.26
---------------------------------
Name: go-chi
Requests Per Second: 38337.13
Aborted Due To Deadline: 537
Successful Requests: 2301049
P99.999 Latency: 257.28865ms
P99 Latency: 110.09385ms
P90 Latency: 49.175117ms
Average Latency: 25.994839ms
Min Latency: 152.392µs
Max Latency: 387.965259ms
Duration: 1m0.03542742s
Memory (MiB): 42.50
CPU (%): 0.00
Network (NetIO - MiB): 3.45
Disk (BlockIO - MiB): 0.00
Performance Score: 2.24
Resource Utilization Score: 7.91
Total Score: 4.30
---------------------------------
Name: go-fuego
Requests Per Second: 36514.60
Aborted Due To Deadline: 630
Successful Requests: 2191287
P99.999 Latency: 235.250977ms
P99 Latency: 116.018291ms
P90 Latency: 50.401752ms
Average Latency: 27.29842ms
Min Latency: 143.615µs
Max Latency: 360.454081ms
Duration: 1m0.028506417s
Memory (MiB): 44.37
CPU (%): 0.00
Network (NetIO - MiB): 3.84
Disk (BlockIO - MiB): 0.00
Performance Score: 2.27
Resource Utilization Score: 7.82
Total Score: 4.29
---------------------------------
Name: go-gorilla-mux
Requests Per Second: 39234.58
Aborted Due To Deadline: 602
Successful Requests: 2355264
P99.999 Latency: 256.701907ms
P99 Latency: 121.064154ms
P90 Latency: 53.625942ms
Average Latency: 25.390759ms
Min Latency: 110.832µs
Max Latency: 380.518715ms
Duration: 1m0.045652135s
Memory (MiB): 46.45
CPU (%): 0.00
Network (NetIO - MiB): 4.37
Disk (BlockIO - MiB): 0.00
Performance Score: 2.28
Resource Utilization Score: 7.72
Total Score: 4.26
---------------------------------
Name: go-gin
Requests Per Second: 35383.15
Aborted Due To Deadline: 584
Successful Requests: 2124452
P99.999 Latency: 250.541738ms
P99 Latency: 124.230529ms
P90 Latency: 55.375655ms
Average Latency: 28.134796ms
Min Latency: 145.499µs
Max Latency: 395.676116ms
Duration: 1m0.057846172s
Memory (MiB): 44.41
CPU (%): 0.00
Network (NetIO - MiB): 3.82
Disk (BlockIO - MiB): 0.00
Performance Score: 2.05
Resource Utilization Score: 7.82
Total Score: 4.15
---------------------------------
Name: go-echo
Requests Per Second: 35965.54
Aborted Due To Deadline: 362
Successful Requests: 2160219
P99.999 Latency: 245.936605ms
P99 Latency: 125.794806ms
P90 Latency: 53.637771ms
Average Latency: 27.699933ms
Min Latency: 134.368µs
Max Latency: 367.694084ms
Duration: 1m0.073646261s
Memory (MiB): 49.60
CPU (%): 0.00
Network (NetIO - MiB): 3.40
Disk (BlockIO - MiB): 0.00
Performance Score: 2.15
Resource Utilization Score: 7.55
Total Score: 4.11
---------------------------------
Name: go-std
Requests Per Second: 35647.39
Aborted Due To Deadline: 134
Successful Requests: 2140200
P99.999 Latency: 250.322655ms
P99 Latency: 128.82052ms
P90 Latency: 55.02267ms
Average Latency: 27.977318ms
Min Latency: 122.824µs
Max Latency: 430.874717ms
Duration: 1m0.041820449s
Memory (MiB): 46.45
CPU (%): 0.00
Network (NetIO - MiB): 4.44
Disk (BlockIO - MiB): 0.00
Performance Score: 2.02
Resource Utilization Score: 7.72
Total Score: 4.09
---------------------------------
Name: go-bun
Requests Per Second: 36622.09
Aborted Due To Deadline: 439
Successful Requests: 2198714
P99.999 Latency: 234.378226ms
P99 Latency: 115.308332ms
P90 Latency: 50.258369ms
Average Latency: 27.201824ms
Min Latency: 141.701µs
Max Latency: 295.011929ms
Duration: 1m0.049900626s
Memory (MiB): 73.16
CPU (%): 0.00
Network (NetIO - MiB): 6.44
Disk (BlockIO - MiB): 0.00
Performance Score: 2.39
Resource Utilization Score: 6.41
Total Score: 3.85
---------------------------------
Name: go-fr
Requests Per Second: 15903.35
Aborted Due To Deadline: 749
Successful Requests: 954588
P99.999 Latency: 1.013386898s
P99 Latency: 488.766112ms
P90 Latency: 220.487259ms
Average Latency: 62.549239ms
Min Latency: 137.052µs
Max Latency: 1.690303397s
Duration: 1m0.07143065s
Memory (MiB): 84.17
CPU (%): 0.00
Network (NetIO - MiB): 3.97
Disk (BlockIO - MiB): 0.00
Performance Score: 0.23
Resource Utilization Score: 5.83
Total Score: 2.27
---------------------------------
Name: go-std-env-test-off
Requests Per Second: 31355.46
Aborted Due To Deadline: 500
Successful Requests: 1882761
P99.999 Latency: 179.009328ms
P99 Latency: 71.846076ms
P90 Latency: 45.398098ms
Average Latency: 31.76856ms
Min Latency: 225.642µs
Max Latency: 309.115502ms
Duration: 1m0.061652014s
Memory (MiB): 3903.49
CPU (%): 0.00
Network (NetIO - MiB): 3.91
Disk (BlockIO - MiB): 0.00
Performance Score: 2.49
Resource Utilization Score: -185.14
Total Score: -65.74
---------------------------------