- HTTP over unix domain socket
- POST JSON
- Request validation
- SQLite transaction
Apple M1 Pro, running everything on the same machine
oha http://localhost/posts --no-tui --unix-socket /tmp/benchmark.sock -z 10s -m POST -T 'application/json' -d '{ "content": "oha benchmark", "email": "oha@gmail.com" }'| Framework | RPS | p50 latency |
|---|---|---|
| Kotlin Vert.x SQLite Panama | 53K | 0.9ms |
| Rust Actix-Web | 51K | 0.9ms |
| C# ASP.NET Core | 45K | 1ms |
| Zig http.zig | 43K | 1ms |
| Go FastHTTP | 43K | 1.1ms |
| Kotlin Vert.x SQLite JNI | 40K | 1.1ms |
| JS Bun Hono | 21K | 1.9ms |
| Python Blacksheep | 19K | 2.5ms |
| Elixir Bandit | 10K | 4.9ms |
- Kotlin Native Ktor: can't listen on unix domain sockets
HTTP POST JSON echo
oha http://localhost/echo --no-tui --unix-socket /tmp/benchmark.sock -z 10s -m POST -T 'application/json' -d '{ "content": "oha benchmark", "email": "foo@gmail.com" }'| Framework | RPS | p50 latency |
|---|---|---|
| Rust Actix-Web | 266K | 0.2ms |
| Zig http.zig | 264K | 0.2ms |
| Kotlin Vert.x | 247K | 0.2ms |
| Go FastHTTP | 199K | 0.2ms |
| Python Blacksheep | 192K | 0.2ms |
| C# ASP.NET Core | 190K | 0.3ms |
| JS Bun Hono | 156K | 0.3ms |
| Elixir Bandit | 139K | 0.3ms |