A benchmark suite comparing the performance of Go web frameworks across connection, routing, and handler processing.
go-web-framework-benchmark is a comprehensive performance testing suite for Go web frameworks. It evaluates the entire HTTP request processing pipeline, including connection handling, route selection, and handler execution, providing realistic comparisons for developers choosing a framework.
Go developers and architects selecting a web framework for performance-critical applications, such as microservices or high-throughput APIs.
It provides holistic, real-world performance comparisons by simulating business logic delays, unlike router-only benchmarks, and includes automated testing scripts and graphical result generation for over 40 stable Go frameworks.
:zap: Go web framework benchmark
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Mocks business logic by adding configurable sleep times in handlers to simulate I/O-bound operations like database queries, as described in the Motivation section, providing more realistic performance assessments than router-only tests.
Measures throughput, latency, and memory allocations under various concurrency levels and processing times, evidenced by the automated graphs and test scripts, giving a holistic view of framework performance.
Tests over 40 stable Go web frameworks, from standard net/http to high-performance routers like fasthttp, ensuring wide comparisons as listed in the README's alphabetical framework list.
Includes shell scripts like test.sh and test-all.sh to run benchmarks automatically and generate comparative graphs, reducing manual effort for performance evaluation.
The last test was updated in May 2020, making it irrelevant for newer Go versions or frameworks like Gin or Fiber that have seen significant updates, limiting its current applicability.
Installing dependencies and running all framework tests takes hours, as noted in the README, and requires manual script configuration, which can be cumbersome for quick comparisons.
Focuses on HTTP/1.1 with pipelining but doesn't cover modern web development needs like HTTP/2, WebSockets, or gRPC, which are essential for real-time or high-performance applications.