You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A comprehensive benchmark comparing 27 web frameworks across 5 languages (Go, Rust, Java, .NET, Node.js) using identical API endpoints, middleware stacks, and PostgreSQL-backed storage.
Frameworks
Go (8 frameworks)
Framework
Port
Type
Aarv
8081
Plugin-based, declarative binding
Gin
8082
Radix tree router
Fiber
8083
fasthttp-based
Echo
8084
High performance, minimalist
Mach
8085
Lightweight net/http
Aarv-Segmentio
8086
Aarv + segmentio JSON codec
Chi
8087
Lightweight net/http router
net/http
8088
Go stdlib only (zero dependencies)
Rust (5 frameworks)
Framework
Port
Type
Actix-web
8111
Actor-based, multi-threaded
Axum
8112
Tower/Hyper-based
Rocket
8113
Macro-driven
Warp
8114
Filter-based composition
Poem
8115
Clean middleware API
Java (7 frameworks)
Framework
Port
Type
Spring WebMVC
8101
Servlet/Tomcat
Spring WebFlux
8102
Reactive/Netty
Quarkus
8103
Cloud-native, RESTEasy
Micronaut
8104
Compile-time DI
Vert.x
8105
Event-driven/Netty
Helidon SE
8106
Loom/Virtual threads
Javalin
8107
Lightweight/Jetty
.NET (5 frameworks)
Framework
Port
Type
Minimal API
8093
ASP.NET Core minimal
Controller API
8094
ASP.NET MVC controllers
AOT
8095
Native AOT + source-gen JSON
Carter
8096
Carter modules
FastEndpoints
8097
Structured endpoints
Node.js (2 frameworks)
Framework
Port
Type
Express
8091
Synchronous middleware
Fastify
8092
Schema-based, fast serialization
API Endpoints (8 total)
All frameworks implement identical endpoints:
Method
Path
Description
Status
POST
/users/{userId}/orders
Create order
201
GET
/users/{userId}/orders/{orderId}?fields=X
Get order
200/404
PUT
/users/{userId}/orders/{orderId}
Update order
200/404
DELETE
/users/{userId}/orders/{orderId}
Delete order
200/404
POST
/users/{userId}/orders/bulk
Bulk create 50 orders (~9KB req, ~15KB resp)
201
GET
/users/{userId}/orders
List all user orders (~20KB resp)
200
PUT
/users/{userId}/profile
Create/update nested profile (~650B)
200
GET
/users/{userId}/profile
Get nested profile (~700B)
200/404
Middleware Stack (identical across all 27 frameworks)
Every framework runs these 6 middleware layers in order: