From 8281b95fb0cbc996de4772be8a9a9f71db1cce07 Mon Sep 17 00:00:00 2001 From: Roger Thomas Date: Fri, 13 Nov 2026 11:03:02 +0000 Subject: [PATCH] add-full-run-report-20261113 Full run on every dependency at latest (PR #4): launch-ec2 run 43403227769, with blacksheep backfilled by run 43406276183 after its runner crashed at startup writing the run record to TaglyDB. Co-Authored-By: Claude Opus 5.5 --- reports/20261113T094529/chart.svg | 4166 ++++++++++++++++++++++++++ reports/20261113T094529/report.md | 162 + reports/20261113T094529/results.json | 2658 ++++++++++++++++ 3 files changed, 6986 insertions(+) create mode 100644 reports/20261113T094529/chart.svg create mode 100644 reports/20261113T094529/report.md create mode 100644 reports/20261113T094529/results.json diff --git a/reports/20261113T094529/chart.svg b/reports/20261113T094529/chart.svg new file mode 100644 index 0000000..0e2e2d6 --- /dev/null +++ b/reports/20261113T094529/chart.svg @@ -0,0 +1,4166 @@ + + + + + + + + 2026-11-13T10:19:58.080479 + image/svg+xml + + + Matplotlib v3.11.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/20261113T094529/report.md b/reports/20261113T094529/report.md new file mode 100644 index 0000000..9c52734 --- /dev/null +++ b/reports/20261113T094529/report.md @@ -0,0 +1,162 @@ +# jero-benchmarks — run `20261113T094529` + +_Generated 2026-11-13T10:19:58+00:00_ + +## Run configuration + +| | | +| --- | --- | +| **Run ID** | `20261113T094529` | +| **Created** | 2026-11-13 09:46:29 UTC | +| **Host** | ip-172-31-17-70.eu-central-1.compute.internal | +| **AWS region** | eu-central-1 | +| **EC2 instance type** | c9g.2xlarge | +| **EC2 AMI** | `ami-0f7d895aa37851cb2` | +| **Commit** | [`da79feb0b9b0`](https://github.com/RogerThomas/api-benchmarks/commit/da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d) | +| **Images** | `blacksheep-2026.11.13.01`, `django-bolt-2026.11.13.01`, `elysia-2026.11.13.01`, `fastapi-2026.11.13.01`, `flask-2026.11.13.01`, `gin-2026.11.13.01`, `jero-2026.11.13.01`, `litestar-2026.11.13.01`, `postgres-2026.11.13.01`, `robyn-2026.11.13.01`, `runner-2026.10.28.01`, `spring-boot-2026.10.28.01`, `upstream-2026.10.28.01` | +| **Load generator** | wrk | +| **Connections** | 128 | +| **Duration per attempt** | 60s | +| **Best of** | 3 | +| **Server workers** | 1 | +| **Python server** | peregrine | +| **Event loop** | uvloop | +| **Frameworks** | blacksheep, django-bolt, elysia, fastapi, flask, gin, jero, litestar, robyn, spring-boot | +| **Results backend** | TaglyDB | + +## Results + +![jero-benchmarks results grid](chart.svg) + +### 1 - GET /info + +| Framework | req/s | vs | mean | vs | p99 | vs | succ% | memPk | memAv | cpuAv | cpuPk | cpu ~ | mem ~ | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| elysia | ~144.2k | x1.44 | 0.89ms | x1.43 | 1.86ms | x0.71 | 100.00 | 24M | 22M | 97% | 102% | ▇▇▇▇▇▇█▇▇▇▇▇▇▇▇▄ | ▇▇█▇▇▇▇▇▇▇▇▇▇▇▇▆ | +| jero | ~99.9k | x1.00 | 1.27ms | x1.00 | 1.32ms | x1.00 | 100.00 | 41M | 40M | 100% | 102% | ▇▇▇▇▇█▇▇▇▇▇▇▇▇▇▇ | ▇▇█▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| django-bolt | ~91.2k | x0.91 | 1.40ms | x0.91 | 1.43ms | x0.92 | 100.00 | 69M | 69M | 98% | 103% | ▇▇█▇▇▇▇▇▇▇▇▇▇▇▇▄ | ██▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| gin | ~88.1k | x0.88 | 1.46ms | x0.87 | 3.28ms | x0.40 | 100.00 | 10M | 10M | 98% | 103% | ▇▇▇▇▇▇▇▇▇█▇▇▇▇▇▄ | ██▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| blacksheep | ~74.2k | x0.74 | 1.72ms | x0.74 | 1.77ms | x0.75 | 100.00 | 48M | 48M | 97% | 101% | ▇▇▇▇█▇▇▇▇▇▇▇▇▇▇▄ | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| litestar | ~49.2k | x0.49 | 2.59ms | x0.49 | 2.64ms | x0.50 | 100.00 | 49M | 49M | 97% | 101% | ▇█▇▇▇▇▇▇▇▇▇▇▇▇▇▄ | ▇█▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| robyn | ~43.6k | x0.44 | 2.93ms | x0.43 | 3.04ms | x0.43 | 100.00 | 40M | 40M | 101% | 102% | ▇▇▇▇▇▇█▇▇▇▇▇▇▇▇▇ | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| spring-boot | ~41.7k | x0.42 | 3.06ms | x0.42 | 4.86ms | x0.27 | 100.00 | 615M | 615M | 102% | 103% | ▇▇▇▇▇▇▇▇▇▇▇▇█▇▇▇ | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| fastapi | ~29.5k | x0.30 | 4.32ms | x0.29 | 4.45ms | x0.30 | 100.00 | 53M | 53M | 97% | 102% | ▇▇▇▇▇▇▇█▇▇▇▇▇▇▇▄ | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| flask | ~26.9k | x0.27 | 4.74ms | x0.27 | 4.86ms | x0.27 | 100.00 | 57M | 57M | 97% | 102% | ▇▇▇▇▇▇▇▇▇▇▇█▇▇▇▄ | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | + +### 2 - POST /movies (JWT) + +| Framework | req/s | vs | mean | vs | p99 | vs | succ% | memPk | memAv | cpuAv | cpuPk | cpu ~ | mem ~ | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| jero | ~84.0k | x1.00 | 1.51ms | x1.00 | 1.57ms | x1.00 | 100.00 | 41M | 41M | 100% | 105% | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| django-bolt | ~81.8k | x0.97 | 1.56ms | x0.97 | 1.59ms | x0.98 | 100.00 | 71M | 70M | 101% | 103% | ▇▇▇▇▇█▇▇▇▇▇▇▇▇▇▇ | ▇█▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| gin | ~53.7k | x0.64 | 2.39ms | x0.63 | 5.07ms | x0.31 | 100.00 | 10M | 10M | 97% | 102% | ▇▇▇▇▇█▇▇▇▇▇▇▇▇▇▄ | ███▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| elysia | ~40.7k | x0.48 | 3.14ms | x0.48 | 6.06ms | x0.26 | 100.00 | 32M | 30M | 97% | 101% | ▇▇▇▇▇▇▇▇█▇▇▇▇▇▇▄ | ▇▇▇▇▇▇▇█▇▇▇▇▇▇▇▇ | +| blacksheep | ~33.6k | x0.40 | 3.78ms | x0.40 | 3.84ms | x0.41 | 100.00 | 48M | 48M | 97% | 101% | ▇▇▇▇▇▇▇█▇▇▇▇▇▇▇▄ | ▇▇▇▇▇██▇▇▇▇▇▇▇▇▇ | +| litestar | ~30.3k | x0.36 | 4.20ms | x0.36 | 4.27ms | x0.37 | 100.00 | 49M | 49M | 97% | 101% | ▇▇▇▇▇▇▇█▇█▇▇▇▇▇▄ | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| spring-boot | ~26.8k | x0.32 | 4.77ms | x0.32 | 7.31ms | x0.21 | 100.00 | 632M | 631M | 101% | 102% | ▇▇▇▇▇▇▇▇█▇▇▇▇▇▇▇ | ▇▇▇▇▇▇▇█▇▇▇▇▇▇█▇ | +| robyn | ~26.7k | x0.32 | 4.78ms | x0.32 | 4.86ms | x0.32 | 100.00 | 41M | 40M | 97% | 101% | ▇▇▇▇▇▇▇▇▇▇▇▇▇▇█▄ | ▇▇▇▇▇█▇▇▇▇▇▇▇▇▇▇ | +| flask | ~20.1k | x0.24 | 6.35ms | x0.24 | 6.49ms | x0.24 | 100.00 | 58M | 58M | 100% | 102% | ▇▇▇▇▇▇▇▇▇▇▇█▇▇▇▇ | ███▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| fastapi | ~17.6k | x0.21 | 7.26ms | x0.21 | 7.44ms | x0.21 | 100.00 | 54M | 54M | 97% | 102% | ▇█▇▇▇▇▇▇▇▇▇▇▇▇▇▄ | ▇▇█▇▇▇▇▇▇▇▇▇▇▇▇▇ | + +### 3 - GET proxy (upstream) + +| Framework | req/s | vs | mean | vs | p99 | vs | succ% | memPk | memAv | cpuAv | cpuPk | cpu ~ | mem ~ | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| jero | ~51.8k | x1.00 | 2.46ms | x1.00 | 2.65ms | x1.00 | 100.00 | 45M | 44M | 97% | 103% | ▇▇▇▇▇▇▇▇█▇▇▇▇▇▇▄ | ▇█▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| elysia | ~44.8k | x0.87 | 2.85ms | x0.86 | 4.81ms | x0.55 | 100.00 | 26M | 26M | 101% | 102% | ▇▇█▇▇▇▇▇▇▇▇▇▇▇▇▇ | ▇▇▇▇▇█▇▇▇▇▇▇▇▇▇▇ | +| django-bolt | ~41.9k | x0.81 | 3.05ms | x0.81 | 4.03ms | x0.66 | 100.00 | 78M | 77M | 98% | 102% | ▇▇▇▇▇▇▇█▇▇▇▇▇▇▇▄ | ▇▇▇▇▇▇▇▇▇▇▇▇▇█▇▇ | +| gin | ~32.7k | x0.63 | 3.91ms | x0.63 | 7.14ms | x0.37 | 100.00 | 14M | 14M | 101% | 103% | ▇▇▇█▇▇▇▇▇▇▇▇▇▇▇▇ | ▇▇▇▇▇▇▇█▇▇▇▇▇▇▇▇ | +| blacksheep | ~31.8k | x0.62 | 4.01ms | x0.61 | 4.29ms | x0.62 | 100.00 | 53M | 52M | 97% | 102% | ▇▇▇█▇▇▇▇▇▇▇▇▇▇▇▄ | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| litestar | ~26.6k | x0.51 | 4.82ms | x0.51 | 7.65ms | x0.35 | 100.00 | 53M | 53M | 101% | 102% | ▇▇▇▇▇▇▇▇▇▇▇▇█▇▇▇ | ▇▇▇▇█▇▇▇▇▇▇▇▇▇▇▇ | +| robyn | ~23.1k | x0.45 | 5.54ms | x0.44 | 8.41ms | x0.32 | 100.00 | 48M | 47M | 100% | 102% | ▇▇▇▇▇▇▇▇█▇▇▇▇▇▇▇ | ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇█ | +| spring-boot | ~20.0k | x0.39 | 6.40ms | x0.38 | 9.80ms | x0.27 | 100.00 | 660M | 659M | 101% | 102% | ▇▇█▇▇▇▇▇▇▇▇▇▇▇▇▇ | ▇█▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| flask | ~16.7k | x0.32 | 7.64ms | x0.32 | 7.96ms | x0.33 | 100.00 | 58M | 58M | 88% | 88% | ▇▇▇▇▇▇▇▇▇▇▇▇▇█▇▇ | ███████████████▇ | +| fastapi | ~11.7k | x0.23 | 11.07ms | x0.22 | 28.19ms | x0.09 | 100.00 | 59M | 59M | 100% | 102% | ▇▇█▇▇▇▇▇▇▇▇▇▇▇▇▇ | ▇▇▇▇▇▇▇█▇▇▇▇▇▇▇▇ | + +### 4 - GET /users/me (DB) + +| Framework | req/s | vs | mean | vs | p99 | vs | succ% | memPk | memAv | cpuAv | cpuPk | cpu ~ | mem ~ | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| jero | ~46.2k | x1.00 | 2.76ms | x1.00 | 3.33ms | x1.00 | 100.00 | 48M | 48M | 101% | 103% | ▇▇▇▇▇▇▇▇▇▇▇▇█▇▇▇ | ▇▇█▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| gin | ~37.8k | x0.82 | 3.39ms | x0.82 | 7.14ms | x0.47 | 100.00 | 28M | 27M | 101% | 103% | ▇▇▇▇▇▇▇█▇▇▇▇▇▇▇▇ | ▇█▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| django-bolt | ~36.3k | x0.79 | 3.52ms | x0.79 | 4.35ms | x0.76 | 100.00 | 83M | 82M | 98% | 105% | ▇█▇▇▇▇▇▇▇▇▇▇▇▇▇▄ | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| blacksheep | ~29.7k | x0.64 | 4.31ms | x0.64 | 5.39ms | x0.62 | 100.00 | 56M | 56M | 100% | 103% | ▇▇▇▇▇▇█▇▇▇▇▇▇▇▇▇ | ▇▇▇▇▇▇▇▇▇▇▇▇▇▇█▇ | +| elysia | ~26.5k | x0.57 | 4.82ms | x0.57 | 9.34ms | x0.36 | 100.00 | 33M | 31M | 101% | 104% | ▇▇▇▇█▇▇▇▇▇▇▇▇▇▇▇ | ▇▇▇█▇▇▇▇▇▇▇▇▇▇▇▇ | +| robyn | ~22.1k | x0.48 | 5.79ms | x0.48 | 8.62ms | x0.39 | 100.00 | 51M | 51M | 101% | 102% | ▇▇▇▇▇▇▇█▇▇▇▇▇▇▇▇ | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | +| litestar | ~22.0k | x0.48 | 5.83ms | x0.47 | 8.44ms | x0.39 | 100.00 | 57M | 56M | 97% | 103% | ▇▇▇▇▇▇▇▇█▇▇▇▇▇▇▄ | ▇▇▇▇▇▇▇▇▇▇▇▇█▇▇▇ | +| spring-boot | ~20.2k | x0.44 | 6.33ms | x0.44 | 10.29ms | x0.32 | 100.00 | 673M | 672M | 101% | 103% | ▇▇▇▇█▇▇▇▇▇▇▇▇▇▇▇ | ▇▇▇▇▇▇▇▇▇▇▇█▇▇▇▇ | +| fastapi | ~10.0k | x0.22 | 12.93ms | x0.21 | 30.44ms | x0.11 | 100.00 | 63M | 63M | 97% | 102% | ▇▇█▇▇▇▇▇▇▇▇▇▇▇▇▄ | ▇▇▇▇▇▇▇▇▇▇▇▇▇▇█▇ | +| flask | ~9.0k | x0.19 | 14.26ms | x0.19 | 15.79ms | x0.21 | 100.00 | 58M | 58M | 80% | 80% | ▇▇▇▇▇▇▇▇█▇▇▇▇▇▇▇ | █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | + +## How these results were made + +**Isolation.** Exactly one framework container is ever alive at a time, alongside +the shared Postgres/upstream/load-generator infra -- brought up via `compose.base.yml` +plus that framework's own `compose..yml`, torn down before the next framework +starts. No two frameworks ever share a core or contend for host resources. + +**One worker, one core.** Every service runs exactly 1 worker (peregrine +`--workers 1`, Gin `GOMAXPROCS=1`, Bun's single JS thread, Bolt `--processes 1`), +pinned to one dedicated CPU core via `cpuset` affinity -- not a CFS quota, which +throttles a saturated container every 100ms scheduler period and adds +tail-latency stalls; affinity confines all of a framework's threads (including +GIL-releasing extensions like `msgspec`/`fastpg`) to one core with no such stalls. + +**Equal resource budgets.** DB pool and outbound-HTTP pool are capped at **64** +connections for every framework/language. + +**Load generator.** wrk (C) or oha (Rust), on two dedicated cores -- fast +enough that the framework, not the load generator, is what saturates. + +**Best of N.** Each (framework, test) pair starts with an untimed 3s warm-up, +then runs multiple attempts; the attempt with the highest req/s is kept. + +**Success %** is the share of requests that got the expected status. Before +the load, a correctness pass also checks the *body* of 100 responses (key +fields per test); if any is wrong, the whole test is reported as 0% success, +so a fast-but-wrong response can never pass as a success. + +**Resource-use columns.** `memPk`/`memAv` = peak/average resident memory (MB); +`cpuAv`/`cpuPk` = average/peak CPU as % of one core (pinned via `cpuset`, so +these sit ≤100%); `cpu ~`/`mem ~` = a 0-to-max-scaled sparkline of the CPU/memory +time series during the attempt. Only the framework's own container is measured +-- Postgres and the upstream are excluded. + +**Equal work, per test** -- every framework does the same task; only the +*native* tool differs: + +| Framework | Language | Server | HTTP client | DB driver | Validates body (test 2) | Parses upstream (test 3) | JSON serializer | +| --- | --- | --- | --- | --- | --- | --- | --- | +| blacksheep | Python 3.14 | peregrine ASGI | lothc | fastpg | pydantic (FromJSON) | typed (pydantic) | stdlib json (BlackSheep default) | +| django-bolt | Python 3.14 | built-in Rust server | lothc | fastpg | msgspec Struct | typed (msgspec) + response re-validate | msgspec | +| elysia | Bun / TS | Bun native | fetch | Bun SQL | typebox schema | passthrough object | Bun native | +| fastapi | Python 3.14 | peregrine ASGI | lothc | fastpg | pydantic | typed (pydantic) + response-model re-validate | pydantic | +| flask | Python 3.14 | peregrine WSGI | lothc (sync) | psycopg | pydantic | typed (pydantic) | stdlib json | +| gin | Go | net/http (GOMAXPROCS=1) | net/http | pgx | ShouldBindJSON struct | typed struct | encoding/json | +| jero | Python 3.14 | peregrine ASGI | lothc | fastpg | msgspec Struct | typed (msgspec) | msgspec | +| litestar | Python 3.14 | peregrine ASGI | lothc | fastpg | msgspec Struct | typed (msgspec) | msgspec | +| robyn | Python 3.14 | built-in Rust server | lothc | fastpg | pydantic (native param) | typed (pydantic) | orjson (dicts) / pydantic | +| spring-boot | Java 25 | embedded Tomcat, virtual threads | RestClient (Apache HttpClient5) | JdbcTemplate (HikariCP) | jakarta bean validation (record) | typed (Jackson) | Jackson | + +**One deliberate exception to per-framework idiom:** Django Bolt +reaches Postgres through raw fastpg -- the same driver the rest of the async +Python fleet uses -- rather than Django's ORM, whose sync-driver-behind-an-async-facade +design would make test 4 a measurement of Django's data layer instead of the +framework. For the same reason, every JWT endpoint hand-decodes the bearer +token with ryjwt rather than using each framework's own auth integration. + +**Known, intended differences** (each framework's real idiomatic behaviour, kept +rather than normalised away): the JSON serializer column (stdlib `json` is +slower than msgspec/orjson/native); FastAPI and Django Bolt additionally +re-validate the *response* against its declared model (both frameworks' +default); Elysia returns the upstream payload parsed but unvalidated; +Spring Boot's Jackson binding coerces a numeric field given +as a JSON string rather than rejecting it like pydantic/msgspec do. These are +visible here so a number is never mistaken for pure framework speed. + +## Disclosure + +The author of this benchmark suite is also the author of [jero](https://pypi.org/project/jero/), one of the frameworks benchmarked here. Every measure above -- equal resource budgets, idiomatic code per framework, isolated single-framework runs, documented intended differences -- applies identically to jero and everyone else; nothing here is tuned in its favor. + +--- +_Generated by `export_results.py` from `results.is_best` rows in TaglyDB._ \ No newline at end of file diff --git a/reports/20261113T094529/results.json b/reports/20261113T094529/results.json new file mode 100644 index 0000000..a6d9117 --- /dev/null +++ b/reports/20261113T094529/results.json @@ -0,0 +1,2658 @@ +{ + "run": { + "run_id": "20261113T094529", + "created_at": "2026-11-13T09:46:29.312521+00:00", + "hostname": "ip-172-31-17-70.eu-central-1.compute.internal", + "vus": 128, + "duration": "60s", + "best_of": 3, + "workers": 1, + "python_server": null, + "loadgen": "wrk", + "ec2_ami_id": "ami-0f7d895aa37851cb2", + "ec2_instance_type": "c9g.2xlarge", + "aws_region": "eu-central-1" + }, + "results": [ + { + "framework": "blacksheep", + "test": "test1", + "attempt": 1, + "reqs_per_sec": 74230.76415820382, + "latency_avg_ms": 1.715052651, + "latency_p50_ms": 1.717, + "latency_p75_ms": 1.731, + "latency_p90_ms": 1.742, + "latency_p99_ms": 1.766, + "failed_rate": 0.0, + "total_requests": 4457672, + "is_best": true, + "peak_rss_mb": 47.93, + "avg_rss_mb": 47.66870967741936, + "avg_cpu_pct": 96.62161290322581, + "peak_cpu_pct": 101.25, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "blacksheep", + "test": "test1", + "attempt": 2, + "reqs_per_sec": 73898.87610709187, + "latency_avg_ms": 1.723519485, + "latency_p50_ms": 1.725, + "latency_p75_ms": 1.739, + "latency_p90_ms": 1.75, + "latency_p99_ms": 1.773, + "failed_rate": 0.0, + "total_requests": 4439155, + "is_best": false, + "peak_rss_mb": 48.16, + "avg_rss_mb": 47.86066666666667, + "avg_cpu_pct": 100.127, + "peak_cpu_pct": 101.26, + "cpu_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "blacksheep", + "test": "test1", + "attempt": 3, + "reqs_per_sec": 73929.35292539054, + "latency_avg_ms": 1.723196903, + "latency_p50_ms": 1.725, + "latency_p75_ms": 1.738, + "latency_p90_ms": 1.749, + "latency_p99_ms": 1.773, + "failed_rate": 0.0, + "total_requests": 4440543, + "is_best": false, + "peak_rss_mb": 48.14, + "avg_rss_mb": 47.82233333333333, + "avg_cpu_pct": 100.47666666666667, + "peak_cpu_pct": 101.76, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "blacksheep", + "test": "test2", + "attempt": 1, + "reqs_per_sec": 33644.98896345032, + "latency_avg_ms": 3.781462955, + "latency_p50_ms": 3.785, + "latency_p75_ms": 3.798, + "latency_p90_ms": 3.81, + "latency_p99_ms": 3.838, + "failed_rate": 0.0, + "total_requests": 2021754, + "is_best": true, + "peak_rss_mb": 48.49, + "avg_rss_mb": 48.281612903225806, + "avg_cpu_pct": 96.85612903225807, + "peak_cpu_pct": 101.37, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "blacksheep", + "test": "test2", + "attempt": 2, + "reqs_per_sec": 33506.0651612824, + "latency_avg_ms": 3.8041428799999997, + "latency_p50_ms": 3.807, + "latency_p75_ms": 3.823, + "latency_p90_ms": 3.837, + "latency_p99_ms": 3.863, + "failed_rate": 0.0, + "total_requests": 2013498, + "is_best": false, + "peak_rss_mb": 48.51, + "avg_rss_mb": 48.214666666666666, + "avg_cpu_pct": 100.15599999999999, + "peak_cpu_pct": 101.39, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "blacksheep", + "test": "test2", + "attempt": 3, + "reqs_per_sec": 33550.83480001266, + "latency_avg_ms": 3.801709272, + "latency_p50_ms": 3.805, + "latency_p75_ms": 3.819, + "latency_p90_ms": 3.831, + "latency_p99_ms": 3.856, + "failed_rate": 0.0, + "total_requests": 2014939, + "is_best": false, + "peak_rss_mb": 48.56, + "avg_rss_mb": 48.345666666666666, + "avg_cpu_pct": 100.15633333333334, + "peak_cpu_pct": 101.5, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "blacksheep", + "test": "test3", + "attempt": 1, + "reqs_per_sec": 31847.86366122229, + "latency_avg_ms": 4.011457626, + "latency_p50_ms": 3.983, + "latency_p75_ms": 4.077, + "latency_p90_ms": 4.14, + "latency_p99_ms": 4.289, + "failed_rate": 0.0, + "total_requests": 1912070, + "is_best": true, + "peak_rss_mb": 52.78, + "avg_rss_mb": 52.22, + "avg_cpu_pct": 97.02935483870968, + "peak_cpu_pct": 101.64, + "cpu_spark": "\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "blacksheep", + "test": "test3", + "attempt": 2, + "reqs_per_sec": 30986.761018326662, + "latency_avg_ms": 4.135782516, + "latency_p50_ms": 4.109, + "latency_p75_ms": 4.154, + "latency_p90_ms": 4.215, + "latency_p99_ms": 6.877, + "failed_rate": 0.0, + "total_requests": 1861612, + "is_best": false, + "peak_rss_mb": 52.3, + "avg_rss_mb": 51.998000000000005, + "avg_cpu_pct": 100.57199999999999, + "peak_cpu_pct": 101.9, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "blacksheep", + "test": "test3", + "attempt": 3, + "reqs_per_sec": 30962.356354377673, + "latency_avg_ms": 4.137156452999999, + "latency_p50_ms": 4.094, + "latency_p75_ms": 4.138, + "latency_p90_ms": 4.209, + "latency_p99_ms": 6.902, + "failed_rate": 0.0, + "total_requests": 1860460, + "is_best": false, + "peak_rss_mb": 52.41, + "avg_rss_mb": 52.15566666666667, + "avg_cpu_pct": 100.59266666666667, + "peak_cpu_pct": 101.88, + "cpu_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "blacksheep", + "test": "test4", + "attempt": 1, + "reqs_per_sec": 29370.063043967828, + "latency_avg_ms": 4.36001659, + "latency_p50_ms": 4.309, + "latency_p75_ms": 4.402, + "latency_p90_ms": 4.471, + "latency_p99_ms": 5.609, + "failed_rate": 0.0, + "total_requests": 1764930, + "is_best": false, + "peak_rss_mb": 55.78, + "avg_rss_mb": 55.46612903225807, + "avg_cpu_pct": 97.10645161290323, + "peak_cpu_pct": 101.64, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "blacksheep", + "test": "test4", + "attempt": 2, + "reqs_per_sec": 29483.52042339993, + "latency_avg_ms": 4.343308642, + "latency_p50_ms": 4.283, + "latency_p75_ms": 4.398, + "latency_p90_ms": 4.484, + "latency_p99_ms": 5.463, + "failed_rate": 0.0, + "total_requests": 1771251, + "is_best": false, + "peak_rss_mb": 55.67, + "avg_rss_mb": 55.427, + "avg_cpu_pct": 99.99166666666666, + "peak_cpu_pct": 102.17, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "blacksheep", + "test": "test4", + "attempt": 3, + "reqs_per_sec": 29691.753693899114, + "latency_avg_ms": 4.306979919000001, + "latency_p50_ms": 4.257, + "latency_p75_ms": 4.371, + "latency_p90_ms": 4.464, + "latency_p99_ms": 5.39, + "failed_rate": 0.0, + "total_requests": 1783481, + "is_best": true, + "peak_rss_mb": 55.96, + "avg_rss_mb": 55.63733333333333, + "avg_cpu_pct": 100.34966666666668, + "peak_cpu_pct": 102.92, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 blacksheep-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test1", + "attempt": 1, + "reqs_per_sec": 91217.28043600636, + "latency_avg_ms": 1.399664069, + "latency_p50_ms": 1.4, + "latency_p75_ms": 1.407, + "latency_p90_ms": 1.415, + "latency_p99_ms": 1.431, + "failed_rate": 0.0, + "total_requests": 5479250, + "is_best": true, + "peak_rss_mb": 69.43, + "avg_rss_mb": 69.29483870967742, + "avg_cpu_pct": 97.75870967741936, + "peak_cpu_pct": 102.56, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test1", + "attempt": 2, + "reqs_per_sec": 91177.23428239158, + "latency_avg_ms": 1.4002989520000002, + "latency_p50_ms": 1.4, + "latency_p75_ms": 1.407, + "latency_p90_ms": 1.415, + "latency_p99_ms": 1.432, + "failed_rate": 0.0, + "total_requests": 5476828, + "is_best": false, + "peak_rss_mb": 70.43, + "avg_rss_mb": 70.30666666666666, + "avg_cpu_pct": 101.20233333333334, + "peak_cpu_pct": 103.32, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test1", + "attempt": 3, + "reqs_per_sec": 90995.83637495335, + "latency_avg_ms": 1.403578293, + "latency_p50_ms": 1.403, + "latency_p75_ms": 1.411, + "latency_p90_ms": 1.418, + "latency_p99_ms": 1.435, + "failed_rate": 0.0, + "total_requests": 5468809, + "is_best": false, + "peak_rss_mb": 70.39, + "avg_rss_mb": 70.252, + "avg_cpu_pct": 101.433, + "peak_cpu_pct": 103.19, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test2", + "attempt": 1, + "reqs_per_sec": 81628.30380055282, + "latency_avg_ms": 1.564735118, + "latency_p50_ms": 1.565, + "latency_p75_ms": 1.573, + "latency_p90_ms": 1.581, + "latency_p99_ms": 1.598, + "failed_rate": 0.0, + "total_requests": 4901595, + "is_best": false, + "peak_rss_mb": 70.67, + "avg_rss_mb": 70.37, + "avg_cpu_pct": 97.79032258064517, + "peak_cpu_pct": 102.27, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test2", + "attempt": 2, + "reqs_per_sec": 81777.24181787229, + "latency_avg_ms": 1.562911789, + "latency_p50_ms": 1.562, + "latency_p75_ms": 1.57, + "latency_p90_ms": 1.578, + "latency_p99_ms": 1.595, + "failed_rate": 0.0, + "total_requests": 4910121, + "is_best": true, + "peak_rss_mb": 70.57, + "avg_rss_mb": 70.43066666666667, + "avg_cpu_pct": 101.12899999999999, + "peak_cpu_pct": 102.56, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test2", + "attempt": 3, + "reqs_per_sec": 81720.59062969415, + "latency_avg_ms": 1.562268113, + "latency_p50_ms": 1.562, + "latency_p75_ms": 1.57, + "latency_p90_ms": 1.578, + "latency_p99_ms": 1.597, + "failed_rate": 0.0, + "total_requests": 4909182, + "is_best": false, + "peak_rss_mb": 70.62, + "avg_rss_mb": 70.48566666666667, + "avg_cpu_pct": 101.17233333333334, + "peak_cpu_pct": 102.53, + "cpu_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test3", + "attempt": 1, + "reqs_per_sec": 41869.10042721707, + "latency_avg_ms": 3.050545979, + "latency_p50_ms": 2.963, + "latency_p75_ms": 3.486, + "latency_p90_ms": 3.685, + "latency_p99_ms": 4.032, + "failed_rate": 0.0, + "total_requests": 2514976, + "is_best": true, + "peak_rss_mb": 77.64, + "avg_rss_mb": 77.42193548387097, + "avg_cpu_pct": 97.58193548387096, + "peak_cpu_pct": 102.27, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test3", + "attempt": 2, + "reqs_per_sec": 41781.57938447994, + "latency_avg_ms": 3.05844803, + "latency_p50_ms": 2.97, + "latency_p75_ms": 3.493, + "latency_p90_ms": 3.695, + "latency_p99_ms": 4.042, + "failed_rate": 0.0, + "total_requests": 2510632, + "is_best": false, + "peak_rss_mb": 77.2, + "avg_rss_mb": 76.945, + "avg_cpu_pct": 100.96233333333333, + "peak_cpu_pct": 102.79, + "cpu_spark": "\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test3", + "attempt": 3, + "reqs_per_sec": 41842.287598271374, + "latency_avg_ms": 3.0548613319999998, + "latency_p50_ms": 2.968, + "latency_p75_ms": 3.484, + "latency_p90_ms": 3.683, + "latency_p99_ms": 4.034, + "failed_rate": 0.0, + "total_requests": 2513653, + "is_best": false, + "peak_rss_mb": 77.12, + "avg_rss_mb": 77.023, + "avg_cpu_pct": 101.07199999999999, + "peak_cpu_pct": 102.4, + "cpu_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test4", + "attempt": 1, + "reqs_per_sec": 36304.28611222605, + "latency_avg_ms": 3.516948245, + "latency_p50_ms": 3.453, + "latency_p75_ms": 3.725, + "latency_p90_ms": 3.869, + "latency_p99_ms": 4.35, + "failed_rate": 0.0, + "total_requests": 2181451, + "is_best": true, + "peak_rss_mb": 83.26, + "avg_rss_mb": 82.20096774193549, + "avg_cpu_pct": 97.52483870967743, + "peak_cpu_pct": 104.98, + "cpu_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test4", + "attempt": 2, + "reqs_per_sec": 36220.1231630706, + "latency_avg_ms": 3.527822066, + "latency_p50_ms": 3.456, + "latency_p75_ms": 3.728, + "latency_p90_ms": 3.864, + "latency_p99_ms": 4.364, + "failed_rate": 0.0, + "total_requests": 2176394, + "is_best": false, + "peak_rss_mb": 82.4, + "avg_rss_mb": 82.09166666666667, + "avg_cpu_pct": 100.592, + "peak_cpu_pct": 103.88, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "django-bolt", + "test": "test4", + "attempt": 3, + "reqs_per_sec": 36240.93496167841, + "latency_avg_ms": 3.52220815, + "latency_p50_ms": 3.473, + "latency_p75_ms": 3.738, + "latency_p90_ms": 3.899, + "latency_p99_ms": 4.32, + "failed_rate": 0.0, + "total_requests": 2178040, + "is_best": false, + "peak_rss_mb": 82.58, + "avg_rss_mb": 82.31333333333333, + "avg_cpu_pct": 100.30266666666667, + "peak_cpu_pct": 106.23, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 django-bolt-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test1", + "attempt": 1, + "reqs_per_sec": 144173.66248305762, + "latency_avg_ms": 0.8884678189999999, + "latency_p50_ms": 0.843, + "latency_p75_ms": 0.901, + "latency_p90_ms": 0.968, + "latency_p99_ms": 1.864, + "failed_rate": 0.0, + "total_requests": 8657190, + "is_best": true, + "peak_rss_mb": 23.65, + "avg_rss_mb": 21.549999999999997, + "avg_cpu_pct": 97.29, + "peak_cpu_pct": 101.76, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2586", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test1", + "attempt": 2, + "reqs_per_sec": 142611.9728792578, + "latency_avg_ms": 0.897215565, + "latency_p50_ms": 0.855, + "latency_p75_ms": 0.912, + "latency_p90_ms": 0.977, + "latency_p99_ms": 1.846, + "failed_rate": 0.0, + "total_requests": 8569483, + "is_best": false, + "peak_rss_mb": 22.26, + "avg_rss_mb": 20.750666666666667, + "avg_cpu_pct": 100.64366666666666, + "peak_cpu_pct": 101.87, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test1", + "attempt": 3, + "reqs_per_sec": 142155.27728007216, + "latency_avg_ms": 0.900132605, + "latency_p50_ms": 0.856, + "latency_p75_ms": 0.916, + "latency_p90_ms": 0.982, + "latency_p99_ms": 1.849, + "failed_rate": 0.0, + "total_requests": 8535869, + "is_best": false, + "peak_rss_mb": 20.48, + "avg_rss_mb": 20.23, + "avg_cpu_pct": 100.78633333333333, + "peak_cpu_pct": 101.76, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test2", + "attempt": 1, + "reqs_per_sec": 40686.83507947714, + "latency_avg_ms": 3.144659446, + "latency_p50_ms": 2.932, + "latency_p75_ms": 3.17, + "latency_p90_ms": 4.326, + "latency_p99_ms": 6.056, + "failed_rate": 0.0, + "total_requests": 2444244, + "is_best": true, + "peak_rss_mb": 31.51, + "avg_rss_mb": 30.271290322580644, + "avg_cpu_pct": 97.21612903225805, + "peak_cpu_pct": 101.43, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test2", + "attempt": 2, + "reqs_per_sec": 40415.63951033068, + "latency_avg_ms": 3.168133423, + "latency_p50_ms": 2.957, + "latency_p75_ms": 3.2, + "latency_p90_ms": 4.368, + "latency_p99_ms": 6.115, + "failed_rate": 0.0, + "total_requests": 2428504, + "is_best": false, + "peak_rss_mb": 31.27, + "avg_rss_mb": 29.900333333333332, + "avg_cpu_pct": 100.688, + "peak_cpu_pct": 101.9, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test2", + "attempt": 3, + "reqs_per_sec": 40484.071884100435, + "latency_avg_ms": 3.160743056, + "latency_p50_ms": 2.947, + "latency_p75_ms": 3.191, + "latency_p90_ms": 4.358, + "latency_p99_ms": 5.997, + "failed_rate": 0.0, + "total_requests": 2431778, + "is_best": false, + "peak_rss_mb": 28.94, + "avg_rss_mb": 28.362000000000002, + "avg_cpu_pct": 100.52133333333333, + "peak_cpu_pct": 101.62, + "cpu_spark": "\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test3", + "attempt": 1, + "reqs_per_sec": 44416.0201131836, + "latency_avg_ms": 2.876442982, + "latency_p50_ms": 2.729, + "latency_p75_ms": 3.202, + "latency_p90_ms": 3.819, + "latency_p99_ms": 4.84, + "failed_rate": 0.0, + "total_requests": 2668479, + "is_best": false, + "peak_rss_mb": 28.55, + "avg_rss_mb": 26.311935483870965, + "avg_cpu_pct": 97.1058064516129, + "peak_cpu_pct": 102.25, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2586", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test3", + "attempt": 2, + "reqs_per_sec": 44508.79255363063, + "latency_avg_ms": 2.875706949, + "latency_p50_ms": 2.726, + "latency_p75_ms": 3.201, + "latency_p90_ms": 3.802, + "latency_p99_ms": 4.833, + "failed_rate": 0.0, + "total_requests": 2673465, + "is_best": false, + "peak_rss_mb": 27.62, + "avg_rss_mb": 26.445, + "avg_cpu_pct": 100.609, + "peak_cpu_pct": 102.4, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588", + "mem_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test3", + "attempt": 3, + "reqs_per_sec": 44830.150478552016, + "latency_avg_ms": 2.851199465, + "latency_p50_ms": 2.704, + "latency_p75_ms": 3.177, + "latency_p90_ms": 3.785, + "latency_p99_ms": 4.807, + "failed_rate": 0.0, + "total_requests": 2692683, + "is_best": true, + "peak_rss_mb": 26.24, + "avg_rss_mb": 25.775, + "avg_cpu_pct": 100.67666666666668, + "peak_cpu_pct": 102.34, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test4", + "attempt": 1, + "reqs_per_sec": 26339.964411621324, + "latency_avg_ms": 4.8566791469999995, + "latency_p50_ms": 4.677, + "latency_p75_ms": 5.678, + "latency_p90_ms": 6.789, + "latency_p99_ms": 9.417, + "failed_rate": 0.0, + "total_requests": 1582409, + "is_best": false, + "peak_rss_mb": 33.48, + "avg_rss_mb": 32.55838709677419, + "avg_cpu_pct": 97.91612903225807, + "peak_cpu_pct": 103.88, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test4", + "attempt": 2, + "reqs_per_sec": 26333.69674359064, + "latency_avg_ms": 4.85895114, + "latency_p50_ms": 4.686, + "latency_p75_ms": 5.692, + "latency_p90_ms": 6.773, + "latency_p99_ms": 9.349, + "failed_rate": 0.0, + "total_requests": 1581354, + "is_best": false, + "peak_rss_mb": 33.11, + "avg_rss_mb": 31.361333333333334, + "avg_cpu_pct": 100.869, + "peak_cpu_pct": 104.62, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "elysia", + "test": "test4", + "attempt": 3, + "reqs_per_sec": 26549.800874287437, + "latency_avg_ms": 4.820536634, + "latency_p50_ms": 4.651, + "latency_p75_ms": 5.64, + "latency_p90_ms": 6.696, + "latency_p99_ms": 9.344, + "failed_rate": 0.0, + "total_requests": 1594669, + "is_best": true, + "peak_rss_mb": 33.21, + "avg_rss_mb": 31.457666666666668, + "avg_cpu_pct": 100.62366666666667, + "peak_cpu_pct": 104.47, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 elysia-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test1", + "attempt": 1, + "reqs_per_sec": 29500.504093954063, + "latency_avg_ms": 4.324032677, + "latency_p50_ms": 4.325, + "latency_p75_ms": 4.35, + "latency_p90_ms": 4.377, + "latency_p99_ms": 4.45, + "failed_rate": 0.0, + "total_requests": 1772129, + "is_best": true, + "peak_rss_mb": 53.49, + "avg_rss_mb": 52.993870967741934, + "avg_cpu_pct": 96.8309677419355, + "peak_cpu_pct": 101.69, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test1", + "attempt": 2, + "reqs_per_sec": 29436.88300087969, + "latency_avg_ms": 4.336093225, + "latency_p50_ms": 4.339, + "latency_p75_ms": 4.365, + "latency_p90_ms": 4.389, + "latency_p99_ms": 4.449, + "failed_rate": 0.0, + "total_requests": 1768270, + "is_best": false, + "peak_rss_mb": 53.32, + "avg_rss_mb": 53.07633333333333, + "avg_cpu_pct": 100.13933333333333, + "peak_cpu_pct": 101.0, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test1", + "attempt": 3, + "reqs_per_sec": 29478.54344396286, + "latency_avg_ms": 4.329391517, + "latency_p50_ms": 4.331, + "latency_p75_ms": 4.355, + "latency_p90_ms": 4.378, + "latency_p99_ms": 4.445, + "failed_rate": 0.0, + "total_requests": 1771431, + "is_best": false, + "peak_rss_mb": 53.22, + "avg_rss_mb": 52.991, + "avg_cpu_pct": 100.30233333333334, + "peak_cpu_pct": 101.76, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test2", + "attempt": 1, + "reqs_per_sec": 17592.58528787363, + "latency_avg_ms": 7.255919802, + "latency_p50_ms": 7.259, + "latency_p75_ms": 7.295, + "latency_p90_ms": 7.334, + "latency_p99_ms": 7.443, + "failed_rate": 0.0, + "total_requests": 1057014, + "is_best": true, + "peak_rss_mb": 54.02, + "avg_rss_mb": 53.69129032258065, + "avg_cpu_pct": 96.7316129032258, + "peak_cpu_pct": 101.5, + "cpu_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test2", + "attempt": 2, + "reqs_per_sec": 17578.0087229564, + "latency_avg_ms": 7.2599797509999995, + "latency_p50_ms": 7.262, + "latency_p75_ms": 7.297, + "latency_p90_ms": 7.334, + "latency_p99_ms": 7.44, + "failed_rate": 0.0, + "total_requests": 1056443, + "is_best": false, + "peak_rss_mb": 53.88, + "avg_rss_mb": 53.74733333333334, + "avg_cpu_pct": 100.11266666666667, + "peak_cpu_pct": 100.87, + "cpu_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test2", + "attempt": 3, + "reqs_per_sec": 17568.26053813668, + "latency_avg_ms": 7.2657786070000006, + "latency_p50_ms": 7.265, + "latency_p75_ms": 7.303, + "latency_p90_ms": 7.341, + "latency_p99_ms": 7.432, + "failed_rate": 0.0, + "total_requests": 1054853, + "is_best": false, + "peak_rss_mb": 53.84, + "avg_rss_mb": 53.69533333333333, + "avg_cpu_pct": 100.027, + "peak_cpu_pct": 101.38, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test3", + "attempt": 1, + "reqs_per_sec": 11645.73150989274, + "latency_avg_ms": 11.154286998, + "latency_p50_ms": 10.454, + "latency_p75_ms": 10.763, + "latency_p90_ms": 11.175, + "latency_p99_ms": 28.812, + "failed_rate": 0.0, + "total_requests": 699803, + "is_best": false, + "peak_rss_mb": 60.02, + "avg_rss_mb": 59.73451612903226, + "avg_cpu_pct": 96.83741935483872, + "peak_cpu_pct": 101.89, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test3", + "attempt": 2, + "reqs_per_sec": 11623.786435212676, + "latency_avg_ms": 11.155684338999999, + "latency_p50_ms": 10.471, + "latency_p75_ms": 10.802, + "latency_p90_ms": 11.205, + "latency_p99_ms": 28.028, + "failed_rate": 0.0, + "total_requests": 697985, + "is_best": false, + "peak_rss_mb": 59.57, + "avg_rss_mb": 59.31633333333333, + "avg_cpu_pct": 100.25533333333333, + "peak_cpu_pct": 101.63, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test3", + "attempt": 3, + "reqs_per_sec": 11728.862879273242, + "latency_avg_ms": 11.072156799, + "latency_p50_ms": 10.366, + "latency_p75_ms": 10.686, + "latency_p90_ms": 11.116, + "latency_p99_ms": 28.188, + "failed_rate": 0.0, + "total_requests": 704616, + "is_best": true, + "peak_rss_mb": 59.49, + "avg_rss_mb": 59.187333333333335, + "avg_cpu_pct": 100.20466666666667, + "peak_cpu_pct": 101.63, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test4", + "attempt": 1, + "reqs_per_sec": 9973.162839147135, + "latency_avg_ms": 12.929988287, + "latency_p50_ms": 12.391, + "latency_p75_ms": 12.818, + "latency_p90_ms": 13.334, + "latency_p99_ms": 30.444, + "failed_rate": 0.0, + "total_requests": 599148, + "is_best": true, + "peak_rss_mb": 63.08, + "avg_rss_mb": 62.54774193548387, + "avg_cpu_pct": 96.97741935483872, + "peak_cpu_pct": 101.5, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test4", + "attempt": 2, + "reqs_per_sec": 9724.442317317753, + "latency_avg_ms": 13.244076159, + "latency_p50_ms": 12.675, + "latency_p75_ms": 13.026, + "latency_p90_ms": 13.51, + "latency_p99_ms": 30.746, + "failed_rate": 0.0, + "total_requests": 584275, + "is_best": false, + "peak_rss_mb": 62.77, + "avg_rss_mb": 62.586999999999996, + "avg_cpu_pct": 100.35833333333333, + "peak_cpu_pct": 101.5, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "fastapi", + "test": "test4", + "attempt": 3, + "reqs_per_sec": 9923.874534748404, + "latency_avg_ms": 12.979412471, + "latency_p50_ms": 12.36, + "latency_p75_ms": 12.782, + "latency_p90_ms": 13.383, + "latency_p99_ms": 30.214, + "failed_rate": 0.0, + "total_requests": 596065, + "is_best": false, + "peak_rss_mb": 63.03, + "avg_rss_mb": 62.76366666666667, + "avg_cpu_pct": 100.537, + "peak_cpu_pct": 101.9, + "cpu_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 fastapi-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test1", + "attempt": 1, + "reqs_per_sec": 26930.957060597775, + "latency_avg_ms": 4.744634626, + "latency_p50_ms": 4.787, + "latency_p75_ms": 4.816, + "latency_p90_ms": 4.83, + "latency_p99_ms": 4.859, + "failed_rate": 0.0, + "total_requests": 1617446, + "is_best": true, + "peak_rss_mb": 57.37, + "avg_rss_mb": 57.251290322580644, + "avg_cpu_pct": 97.0867741935484, + "peak_cpu_pct": 102.02, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test1", + "attempt": 2, + "reqs_per_sec": 26886.988021687837, + "latency_avg_ms": 4.752924736, + "latency_p50_ms": 4.798, + "latency_p75_ms": 4.826, + "latency_p90_ms": 4.84, + "latency_p99_ms": 4.868, + "failed_rate": 0.0, + "total_requests": 1615790, + "is_best": false, + "peak_rss_mb": 57.62, + "avg_rss_mb": 57.583333333333336, + "avg_cpu_pct": 100.445, + "peak_cpu_pct": 102.14, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test1", + "attempt": 3, + "reqs_per_sec": 26832.277662286164, + "latency_avg_ms": 4.762707023, + "latency_p50_ms": 4.805, + "latency_p75_ms": 4.836, + "latency_p90_ms": 4.85, + "latency_p99_ms": 4.877, + "failed_rate": 0.0, + "total_requests": 1611383, + "is_best": false, + "peak_rss_mb": 57.59, + "avg_rss_mb": 57.57533333333333, + "avg_cpu_pct": 100.52600000000001, + "peak_cpu_pct": 101.65, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588", + "mem_spark": "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test2", + "attempt": 1, + "reqs_per_sec": 20077.260570016235, + "latency_avg_ms": 6.363964666, + "latency_p50_ms": 6.403, + "latency_p75_ms": 6.446, + "latency_p90_ms": 6.466, + "latency_p99_ms": 6.502, + "failed_rate": 0.0, + "total_requests": 1206056, + "is_best": false, + "peak_rss_mb": 58.27, + "avg_rss_mb": 58.15774193548388, + "avg_cpu_pct": 97.01032258064517, + "peak_cpu_pct": 101.63, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2584", + "mem_spark": "\u2588\u2588\u2588\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test2", + "attempt": 2, + "reqs_per_sec": 20124.25090778021, + "latency_avg_ms": 6.348732123, + "latency_p50_ms": 6.388, + "latency_p75_ms": 6.433, + "latency_p90_ms": 6.454, + "latency_p99_ms": 6.49, + "failed_rate": 0.0, + "total_requests": 1208878, + "is_best": true, + "peak_rss_mb": 58.04, + "avg_rss_mb": 58.01733333333333, + "avg_cpu_pct": 100.25399999999999, + "peak_cpu_pct": 101.63, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test2", + "attempt": 3, + "reqs_per_sec": 20097.075190176907, + "latency_avg_ms": 6.356770428, + "latency_p50_ms": 6.401, + "latency_p75_ms": 6.441, + "latency_p90_ms": 6.46, + "latency_p99_ms": 6.496, + "failed_rate": 0.0, + "total_requests": 1207350, + "is_best": false, + "peak_rss_mb": 58.12, + "avg_rss_mb": 58.10733333333334, + "avg_cpu_pct": 100.39866666666667, + "peak_cpu_pct": 101.55, + "cpu_spark": "\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test3", + "attempt": 1, + "reqs_per_sec": 16669.08936957031, + "latency_avg_ms": 7.664397115, + "latency_p50_ms": 7.698, + "latency_p75_ms": 7.738, + "latency_p90_ms": 7.759, + "latency_p99_ms": 7.987, + "failed_rate": 0.0, + "total_requests": 1001323, + "is_best": false, + "peak_rss_mb": 57.97, + "avg_rss_mb": 57.865161290322575, + "avg_cpu_pct": 84.76064516129033, + "peak_cpu_pct": 88.56, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test3", + "attempt": 2, + "reqs_per_sec": 16667.410041379084, + "latency_avg_ms": 7.6659040869999995, + "latency_p50_ms": 7.699, + "latency_p75_ms": 7.739, + "latency_p90_ms": 7.76, + "latency_p99_ms": 8.033, + "failed_rate": 0.0, + "total_requests": 1001110, + "is_best": false, + "peak_rss_mb": 58.04, + "avg_rss_mb": 57.952666666666666, + "avg_cpu_pct": 87.78666666666666, + "peak_cpu_pct": 88.47, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test3", + "attempt": 3, + "reqs_per_sec": 16729.847772250825, + "latency_avg_ms": 7.639338774, + "latency_p50_ms": 7.673, + "latency_p75_ms": 7.716, + "latency_p90_ms": 7.737, + "latency_p99_ms": 7.955, + "failed_rate": 0.0, + "total_requests": 1004475, + "is_best": true, + "peak_rss_mb": 57.98, + "avg_rss_mb": 57.94866666666666, + "avg_cpu_pct": 87.859, + "peak_cpu_pct": 88.33, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587", + "mem_spark": "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test4", + "attempt": 1, + "reqs_per_sec": 8947.582071705545, + "latency_avg_ms": 14.281944698, + "latency_p50_ms": 14.265, + "latency_p75_ms": 14.38, + "latency_p90_ms": 14.491, + "latency_p99_ms": 15.825, + "failed_rate": 0.0, + "total_requests": 537336, + "is_best": false, + "peak_rss_mb": 58.02, + "avg_rss_mb": 57.93677419354839, + "avg_cpu_pct": 76.88032258064516, + "peak_cpu_pct": 80.2, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test4", + "attempt": 2, + "reqs_per_sec": 8959.04616588082, + "latency_avg_ms": 14.263380367, + "latency_p50_ms": 14.246, + "latency_p75_ms": 14.343, + "latency_p90_ms": 14.437, + "latency_p99_ms": 15.793, + "failed_rate": 0.0, + "total_requests": 538033, + "is_best": true, + "peak_rss_mb": 57.96, + "avg_rss_mb": 57.708, + "avg_cpu_pct": 79.52600000000001, + "peak_cpu_pct": 80.14, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "flask", + "test": "test4", + "attempt": 3, + "reqs_per_sec": 8867.793286896904, + "latency_avg_ms": 14.40487274, + "latency_p50_ms": 14.394, + "latency_p75_ms": 14.517, + "latency_p90_ms": 14.619, + "latency_p99_ms": 15.856, + "failed_rate": 0.0, + "total_requests": 532810, + "is_best": false, + "peak_rss_mb": 58.17, + "avg_rss_mb": 57.94766666666666, + "avg_cpu_pct": 79.69433333333333, + "peak_cpu_pct": 80.28, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 flask-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test1", + "attempt": 1, + "reqs_per_sec": 88050.09253114484, + "latency_avg_ms": 1.461290193, + "latency_p50_ms": 1.5, + "latency_p75_ms": 2.1, + "latency_p90_ms": 2.51, + "latency_p99_ms": 3.282, + "failed_rate": 0.0, + "total_requests": 5287365, + "is_best": true, + "peak_rss_mb": 10.17, + "avg_rss_mb": 9.84616129032258, + "avg_cpu_pct": 97.83129032258064, + "peak_cpu_pct": 102.99, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test1", + "attempt": 2, + "reqs_per_sec": 87915.6235821757, + "latency_avg_ms": 1.461871579, + "latency_p50_ms": 1.502, + "latency_p75_ms": 2.103, + "latency_p90_ms": 2.512, + "latency_p99_ms": 3.284, + "failed_rate": 0.0, + "total_requests": 5281288, + "is_best": false, + "peak_rss_mb": 10.1, + "avg_rss_mb": 9.910333333333334, + "avg_cpu_pct": 101.25, + "peak_cpu_pct": 102.84, + "cpu_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test1", + "attempt": 3, + "reqs_per_sec": 87992.45825360378, + "latency_avg_ms": 1.460452728, + "latency_p50_ms": 1.5, + "latency_p75_ms": 2.1, + "latency_p90_ms": 2.509, + "latency_p99_ms": 3.284, + "failed_rate": 0.0, + "total_requests": 5284672, + "is_best": false, + "peak_rss_mb": 10.12, + "avg_rss_mb": 9.896433333333333, + "avg_cpu_pct": 101.26466666666667, + "peak_cpu_pct": 103.02, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test2", + "attempt": 1, + "reqs_per_sec": 53679.55297109475, + "latency_avg_ms": 2.38690687, + "latency_p50_ms": 2.484, + "latency_p75_ms": 3.369, + "latency_p90_ms": 4.083, + "latency_p99_ms": 5.067, + "failed_rate": 0.0, + "total_requests": 3223956, + "is_best": true, + "peak_rss_mb": 10.28, + "avg_rss_mb": 10.080548387096773, + "avg_cpu_pct": 97.47935483870968, + "peak_cpu_pct": 102.17, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test2", + "attempt": 2, + "reqs_per_sec": 53430.77851536513, + "latency_avg_ms": 2.3975829269999998, + "latency_p50_ms": 2.497, + "latency_p75_ms": 3.384, + "latency_p90_ms": 4.098, + "latency_p99_ms": 5.087, + "failed_rate": 0.0, + "total_requests": 3207270, + "is_best": false, + "peak_rss_mb": 10.46, + "avg_rss_mb": 10.368966666666667, + "avg_cpu_pct": 100.61666666666666, + "peak_cpu_pct": 102.27, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test2", + "attempt": 3, + "reqs_per_sec": 53387.64795574086, + "latency_avg_ms": 2.401239904, + "latency_p50_ms": 2.497, + "latency_p75_ms": 3.388, + "latency_p90_ms": 4.106, + "latency_p99_ms": 5.107, + "failed_rate": 0.0, + "total_requests": 3208281, + "is_best": false, + "peak_rss_mb": 10.23, + "avg_rss_mb": 10.181999999999999, + "avg_cpu_pct": 100.78566666666667, + "peak_cpu_pct": 102.52, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2588\u2588", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test3", + "attempt": 1, + "reqs_per_sec": 32485.98559294108, + "latency_avg_ms": 3.9330813979999997, + "latency_p50_ms": 3.475, + "latency_p75_ms": 4.569, + "latency_p90_ms": 5.535, + "latency_p99_ms": 7.22, + "failed_rate": 0.0, + "total_requests": 1952087, + "is_best": false, + "peak_rss_mb": 14.51, + "avg_rss_mb": 13.910967741935485, + "avg_cpu_pct": 97.64322580645161, + "peak_cpu_pct": 102.85, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test3", + "attempt": 2, + "reqs_per_sec": 32635.597771089586, + "latency_avg_ms": 3.917736755, + "latency_p50_ms": 3.467, + "latency_p75_ms": 4.549, + "latency_p90_ms": 5.507, + "latency_p99_ms": 7.162, + "failed_rate": 0.0, + "total_requests": 1960487, + "is_best": false, + "peak_rss_mb": 14.13, + "avg_rss_mb": 13.942666666666666, + "avg_cpu_pct": 100.91266666666667, + "peak_cpu_pct": 102.77, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test3", + "attempt": 3, + "reqs_per_sec": 32666.43974135842, + "latency_avg_ms": 3.912081145, + "latency_p50_ms": 3.467, + "latency_p75_ms": 4.538, + "latency_p90_ms": 5.483, + "latency_p99_ms": 7.144, + "failed_rate": 0.0, + "total_requests": 1962167, + "is_best": true, + "peak_rss_mb": 14.48, + "avg_rss_mb": 13.936666666666667, + "avg_cpu_pct": 100.83333333333333, + "peak_cpu_pct": 102.78, + "cpu_spark": "\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test4", + "attempt": 1, + "reqs_per_sec": 37757.45570079422, + "latency_avg_ms": 3.3981799259999996, + "latency_p50_ms": 3.102, + "latency_p75_ms": 4.004, + "latency_p90_ms": 4.497, + "latency_p99_ms": 7.391, + "failed_rate": 0.0, + "total_requests": 2267883, + "is_best": false, + "peak_rss_mb": 30.52, + "avg_rss_mb": 29.603870967741937, + "avg_cpu_pct": 97.61516129032259, + "peak_cpu_pct": 103.79, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test4", + "attempt": 2, + "reqs_per_sec": 37772.79945449681, + "latency_avg_ms": 3.393878143, + "latency_p50_ms": 3.11, + "latency_p75_ms": 4.008, + "latency_p90_ms": 4.503, + "latency_p99_ms": 7.247, + "failed_rate": 0.0, + "total_requests": 2268986, + "is_best": false, + "peak_rss_mb": 29.56, + "avg_rss_mb": 28.366, + "avg_cpu_pct": 101.24633333333333, + "peak_cpu_pct": 103.09, + "cpu_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "gin", + "test": "test4", + "attempt": 3, + "reqs_per_sec": 37779.47312530035, + "latency_avg_ms": 3.387847123, + "latency_p50_ms": 3.092, + "latency_p75_ms": 4.012, + "latency_p90_ms": 4.512, + "latency_p99_ms": 7.143, + "failed_rate": 0.0, + "total_requests": 2269374, + "is_best": true, + "peak_rss_mb": 27.84, + "avg_rss_mb": 27.312666666666665, + "avg_cpu_pct": 100.93233333333335, + "peak_cpu_pct": 102.68, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 gin-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test1", + "attempt": 1, + "reqs_per_sec": 99698.66398071799, + "latency_avg_ms": 1.277575795, + "latency_p50_ms": 1.277, + "latency_p75_ms": 1.29, + "latency_p90_ms": 1.3, + "latency_p99_ms": 1.319, + "failed_rate": 0.0, + "total_requests": 5982826, + "is_best": false, + "peak_rss_mb": 40.53, + "avg_rss_mb": 40.12064516129032, + "avg_cpu_pct": 96.7074193548387, + "peak_cpu_pct": 101.26, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test1", + "attempt": 2, + "reqs_per_sec": 99908.02967200181, + "latency_avg_ms": 1.272739992, + "latency_p50_ms": 1.274, + "latency_p75_ms": 1.287, + "latency_p90_ms": 1.299, + "latency_p99_ms": 1.318, + "failed_rate": 0.0, + "total_requests": 5998697, + "is_best": true, + "peak_rss_mb": 40.53, + "avg_rss_mb": 40.26366666666667, + "avg_cpu_pct": 100.34766666666665, + "peak_cpu_pct": 101.51, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test1", + "attempt": 3, + "reqs_per_sec": 99643.06232871392, + "latency_avg_ms": 1.2777468429999999, + "latency_p50_ms": 1.278, + "latency_p75_ms": 1.29, + "latency_p90_ms": 1.301, + "latency_p99_ms": 1.32, + "failed_rate": 0.0, + "total_requests": 5986523, + "is_best": false, + "peak_rss_mb": 40.55, + "avg_rss_mb": 40.314, + "avg_cpu_pct": 100.39133333333332, + "peak_cpu_pct": 102.27, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test2", + "attempt": 1, + "reqs_per_sec": 83643.94974334602, + "latency_avg_ms": 1.518619623, + "latency_p50_ms": 1.522, + "latency_p75_ms": 1.538, + "latency_p90_ms": 1.553, + "latency_p99_ms": 1.575, + "failed_rate": 0.0, + "total_requests": 5023578, + "is_best": false, + "peak_rss_mb": 41.02, + "avg_rss_mb": 40.703870967741935, + "avg_cpu_pct": 96.64548387096775, + "peak_cpu_pct": 103.75, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test2", + "attempt": 2, + "reqs_per_sec": 83982.3162714059, + "latency_avg_ms": 1.5115180339999998, + "latency_p50_ms": 1.514, + "latency_p75_ms": 1.529, + "latency_p90_ms": 1.544, + "latency_p99_ms": 1.566, + "failed_rate": 0.0, + "total_requests": 5046178, + "is_best": true, + "peak_rss_mb": 40.88, + "avg_rss_mb": 40.538000000000004, + "avg_cpu_pct": 100.493, + "peak_cpu_pct": 104.52, + "cpu_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test2", + "attempt": 3, + "reqs_per_sec": 83728.24866577334, + "latency_avg_ms": 1.517842384, + "latency_p50_ms": 1.523, + "latency_p75_ms": 1.538, + "latency_p90_ms": 1.552, + "latency_p99_ms": 1.573, + "failed_rate": 0.0, + "total_requests": 5029666, + "is_best": false, + "peak_rss_mb": 40.88, + "avg_rss_mb": 40.531333333333336, + "avg_cpu_pct": 100.18033333333332, + "peak_cpu_pct": 104.3, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test3", + "attempt": 1, + "reqs_per_sec": 51759.14173496483, + "latency_avg_ms": 2.462451197, + "latency_p50_ms": 2.466, + "latency_p75_ms": 2.509, + "latency_p90_ms": 2.563, + "latency_p99_ms": 2.65, + "failed_rate": 0.0, + "total_requests": 3109800, + "is_best": true, + "peak_rss_mb": 44.7, + "avg_rss_mb": 44.34225806451612, + "avg_cpu_pct": 97.25258064516129, + "peak_cpu_pct": 103.05, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test3", + "attempt": 2, + "reqs_per_sec": 51569.49038511714, + "latency_avg_ms": 2.474534623, + "latency_p50_ms": 2.477, + "latency_p75_ms": 2.521, + "latency_p90_ms": 2.575, + "latency_p99_ms": 2.657, + "failed_rate": 0.0, + "total_requests": 3099163, + "is_best": false, + "peak_rss_mb": 44.36, + "avg_rss_mb": 44.1, + "avg_cpu_pct": 100.84266666666667, + "peak_cpu_pct": 104.84, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test3", + "attempt": 3, + "reqs_per_sec": 51575.1031094964, + "latency_avg_ms": 2.473240904, + "latency_p50_ms": 2.477, + "latency_p75_ms": 2.52, + "latency_p90_ms": 2.575, + "latency_p99_ms": 2.668, + "failed_rate": 0.0, + "total_requests": 3097560, + "is_best": false, + "peak_rss_mb": 44.37, + "avg_rss_mb": 44.10766666666667, + "avg_cpu_pct": 100.58033333333333, + "peak_cpu_pct": 104.66, + "cpu_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test4", + "attempt": 1, + "reqs_per_sec": 46226.1957352103, + "latency_avg_ms": 2.763762097, + "latency_p50_ms": 2.503, + "latency_p75_ms": 3.229, + "latency_p90_ms": 3.265, + "latency_p99_ms": 3.337, + "failed_rate": 0.0, + "total_requests": 2777500, + "is_best": false, + "peak_rss_mb": 48.08, + "avg_rss_mb": 47.71645161290323, + "avg_cpu_pct": 97.13677419354838, + "peak_cpu_pct": 102.52, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test4", + "attempt": 2, + "reqs_per_sec": 46234.32668034323, + "latency_avg_ms": 2.7614104139999998, + "latency_p50_ms": 2.501, + "latency_p75_ms": 3.228, + "latency_p90_ms": 3.263, + "latency_p99_ms": 3.325, + "failed_rate": 0.0, + "total_requests": 2777506, + "is_best": true, + "peak_rss_mb": 47.9, + "avg_rss_mb": 47.52466666666667, + "avg_cpu_pct": 100.696, + "peak_cpu_pct": 102.91, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "jero", + "test": "test4", + "attempt": 3, + "reqs_per_sec": 46161.81691693855, + "latency_avg_ms": 2.766643369, + "latency_p50_ms": 2.506, + "latency_p75_ms": 3.234, + "latency_p90_ms": 3.27, + "latency_p99_ms": 3.329, + "failed_rate": 0.0, + "total_requests": 2772295, + "is_best": false, + "peak_rss_mb": 47.88, + "avg_rss_mb": 47.55, + "avg_cpu_pct": 100.58133333333333, + "peak_cpu_pct": 102.4, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 jero-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test1", + "attempt": 1, + "reqs_per_sec": 49237.03995735347, + "latency_avg_ms": 2.588888374, + "latency_p50_ms": 2.592, + "latency_p75_ms": 2.604, + "latency_p90_ms": 2.614, + "latency_p99_ms": 2.636, + "failed_rate": 0.0, + "total_requests": 2957649, + "is_best": true, + "peak_rss_mb": 48.84, + "avg_rss_mb": 48.505806451612905, + "avg_cpu_pct": 96.80032258064516, + "peak_cpu_pct": 101.39, + "cpu_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test1", + "attempt": 2, + "reqs_per_sec": 49168.57318936063, + "latency_avg_ms": 2.593213204, + "latency_p50_ms": 2.596, + "latency_p75_ms": 2.608, + "latency_p90_ms": 2.619, + "latency_p99_ms": 2.641, + "failed_rate": 0.0, + "total_requests": 2953260, + "is_best": false, + "peak_rss_mb": 48.82, + "avg_rss_mb": 48.587333333333326, + "avg_cpu_pct": 100.25366666666667, + "peak_cpu_pct": 101.38, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test1", + "attempt": 3, + "reqs_per_sec": 49193.47678584024, + "latency_avg_ms": 2.592003633, + "latency_p50_ms": 2.595, + "latency_p75_ms": 2.607, + "latency_p90_ms": 2.618, + "latency_p99_ms": 2.641, + "failed_rate": 0.0, + "total_requests": 2954305, + "is_best": false, + "peak_rss_mb": 48.91, + "avg_rss_mb": 48.642, + "avg_cpu_pct": 100.24466666666667, + "peak_cpu_pct": 101.38, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test2", + "attempt": 1, + "reqs_per_sec": 30283.247524256716, + "latency_avg_ms": 4.202566235, + "latency_p50_ms": 4.206, + "latency_p75_ms": 4.22, + "latency_p90_ms": 4.235, + "latency_p99_ms": 4.268, + "failed_rate": 0.0, + "total_requests": 1819226, + "is_best": true, + "peak_rss_mb": 49.08, + "avg_rss_mb": 48.69516129032258, + "avg_cpu_pct": 96.76387096774194, + "peak_cpu_pct": 100.61, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test2", + "attempt": 2, + "reqs_per_sec": 30104.62800138514, + "latency_avg_ms": 4.230196793, + "latency_p50_ms": 4.232, + "latency_p75_ms": 4.248, + "latency_p90_ms": 4.265, + "latency_p99_ms": 4.292, + "failed_rate": 0.0, + "total_requests": 1807489, + "is_best": false, + "peak_rss_mb": 48.86, + "avg_rss_mb": 48.684333333333335, + "avg_cpu_pct": 100.12933333333334, + "peak_cpu_pct": 100.82, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2588\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test2", + "attempt": 3, + "reqs_per_sec": 30206.384532675806, + "latency_avg_ms": 4.215518367, + "latency_p50_ms": 4.218, + "latency_p75_ms": 4.232, + "latency_p90_ms": 4.246, + "latency_p99_ms": 4.278, + "failed_rate": 0.0, + "total_requests": 1814887, + "is_best": false, + "peak_rss_mb": 48.86, + "avg_rss_mb": 48.717999999999996, + "avg_cpu_pct": 100.09633333333333, + "peak_cpu_pct": 101.0, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test3", + "attempt": 1, + "reqs_per_sec": 26343.977947510466, + "latency_avg_ms": 4.8664007389999995, + "latency_p50_ms": 4.798, + "latency_p75_ms": 4.845, + "latency_p90_ms": 4.913, + "latency_p99_ms": 7.748, + "failed_rate": 0.0, + "total_requests": 1582859, + "is_best": false, + "peak_rss_mb": 53.13, + "avg_rss_mb": 52.79516129032258, + "avg_cpu_pct": 97.10387096774193, + "peak_cpu_pct": 101.64, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test3", + "attempt": 2, + "reqs_per_sec": 26565.00963020489, + "latency_avg_ms": 4.823402344, + "latency_p50_ms": 4.785, + "latency_p75_ms": 4.845, + "latency_p90_ms": 4.916, + "latency_p99_ms": 7.651, + "failed_rate": 0.0, + "total_requests": 1595839, + "is_best": true, + "peak_rss_mb": 53.06, + "avg_rss_mb": 52.81933333333333, + "avg_cpu_pct": 100.56833333333334, + "peak_cpu_pct": 102.16, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test3", + "attempt": 3, + "reqs_per_sec": 26415.04711821864, + "latency_avg_ms": 4.850384087, + "latency_p50_ms": 4.798, + "latency_p75_ms": 4.848, + "latency_p90_ms": 4.912, + "latency_p99_ms": 7.691, + "failed_rate": 0.0, + "total_requests": 1587393, + "is_best": false, + "peak_rss_mb": 53.11, + "avg_rss_mb": 52.88633333333333, + "avg_cpu_pct": 100.529, + "peak_cpu_pct": 101.39, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588", + "mem_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test4", + "attempt": 1, + "reqs_per_sec": 21966.202856484222, + "latency_avg_ms": 5.831205474, + "latency_p50_ms": 5.773, + "latency_p75_ms": 5.851, + "latency_p90_ms": 5.933, + "latency_p99_ms": 8.444, + "failed_rate": 0.0, + "total_requests": 1319945, + "is_best": true, + "peak_rss_mb": 56.6, + "avg_rss_mb": 56.317741935483866, + "avg_cpu_pct": 97.13032258064516, + "peak_cpu_pct": 102.53, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test4", + "attempt": 2, + "reqs_per_sec": 21842.165111819468, + "latency_avg_ms": 5.862244219, + "latency_p50_ms": 5.78, + "latency_p75_ms": 5.84, + "latency_p90_ms": 5.909, + "latency_p99_ms": 8.428, + "failed_rate": 0.0, + "total_requests": 1311923, + "is_best": false, + "peak_rss_mb": 56.76, + "avg_rss_mb": 56.404333333333334, + "avg_cpu_pct": 101.02166666666668, + "peak_cpu_pct": 103.08, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "litestar", + "test": "test4", + "attempt": 3, + "reqs_per_sec": 21896.119202233294, + "latency_avg_ms": 5.845224433, + "latency_p50_ms": 5.783, + "latency_p75_ms": 5.854, + "latency_p90_ms": 5.927, + "latency_p99_ms": 8.37, + "failed_rate": 0.0, + "total_requests": 1315359, + "is_best": false, + "peak_rss_mb": 56.72, + "avg_rss_mb": 56.21566666666667, + "avg_cpu_pct": 100.97866666666667, + "peak_cpu_pct": 102.69, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 litestar-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test1", + "attempt": 1, + "reqs_per_sec": 43569.73863802895, + "latency_avg_ms": 2.930151319, + "latency_p50_ms": 2.925, + "latency_p75_ms": 2.94, + "latency_p90_ms": 2.963, + "latency_p99_ms": 3.043, + "failed_rate": 0.0, + "total_requests": 2616000, + "is_best": false, + "peak_rss_mb": 40.3, + "avg_rss_mb": 39.92645161290323, + "avg_cpu_pct": 97.06645161290322, + "peak_cpu_pct": 102.5, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test1", + "attempt": 2, + "reqs_per_sec": 43572.39452961307, + "latency_avg_ms": 2.932082826, + "latency_p50_ms": 2.928, + "latency_p75_ms": 2.944, + "latency_p90_ms": 2.968, + "latency_p99_ms": 3.049, + "failed_rate": 0.0, + "total_requests": 2618581, + "is_best": false, + "peak_rss_mb": 40.18, + "avg_rss_mb": 40.03633333333333, + "avg_cpu_pct": 100.81466666666667, + "peak_cpu_pct": 102.24, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test1", + "attempt": 3, + "reqs_per_sec": 43589.5402118616, + "latency_avg_ms": 2.931385073, + "latency_p50_ms": 2.928, + "latency_p75_ms": 2.943, + "latency_p90_ms": 2.966, + "latency_p99_ms": 3.045, + "failed_rate": 0.0, + "total_requests": 2619196, + "is_best": true, + "peak_rss_mb": 40.25, + "avg_rss_mb": 40.029666666666664, + "avg_cpu_pct": 100.806, + "peak_cpu_pct": 102.09, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test2", + "attempt": 1, + "reqs_per_sec": 26739.30245936065, + "latency_avg_ms": 4.779280694, + "latency_p50_ms": 4.779, + "latency_p75_ms": 4.796, + "latency_p90_ms": 4.817, + "latency_p99_ms": 4.863, + "failed_rate": 0.0, + "total_requests": 1606866, + "is_best": true, + "peak_rss_mb": 40.6, + "avg_rss_mb": 40.46193548387097, + "avg_cpu_pct": 97.18548387096774, + "peak_cpu_pct": 101.38, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test2", + "attempt": 2, + "reqs_per_sec": 26675.79565842786, + "latency_avg_ms": 4.789151723, + "latency_p50_ms": 4.789, + "latency_p75_ms": 4.806, + "latency_p90_ms": 4.827, + "latency_p99_ms": 4.871, + "failed_rate": 0.0, + "total_requests": 1602244, + "is_best": false, + "peak_rss_mb": 40.61, + "avg_rss_mb": 40.440000000000005, + "avg_cpu_pct": 100.39899999999999, + "peak_cpu_pct": 101.35, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test2", + "attempt": 3, + "reqs_per_sec": 26687.123526629184, + "latency_avg_ms": 4.788399485, + "latency_p50_ms": 4.786, + "latency_p75_ms": 4.804, + "latency_p90_ms": 4.826, + "latency_p99_ms": 4.875, + "failed_rate": 0.0, + "total_requests": 1603804, + "is_best": false, + "peak_rss_mb": 40.59, + "avg_rss_mb": 40.443999999999996, + "avg_cpu_pct": 100.471, + "peak_cpu_pct": 101.37, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test3", + "attempt": 1, + "reqs_per_sec": 23103.25129330303, + "latency_avg_ms": 5.542619515, + "latency_p50_ms": 5.486, + "latency_p75_ms": 5.65, + "latency_p90_ms": 6.992, + "latency_p99_ms": 8.386, + "failed_rate": 0.0, + "total_requests": 1387612, + "is_best": false, + "peak_rss_mb": 48.07, + "avg_rss_mb": 47.431290322580644, + "avg_cpu_pct": 96.89483870967742, + "peak_cpu_pct": 101.62, + "cpu_spark": "\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test3", + "attempt": 2, + "reqs_per_sec": 23089.61616514381, + "latency_avg_ms": 5.54592474, + "latency_p50_ms": 5.486, + "latency_p75_ms": 5.666, + "latency_p90_ms": 6.988, + "latency_p99_ms": 8.373, + "failed_rate": 0.0, + "total_requests": 1386817, + "is_best": false, + "peak_rss_mb": 47.62, + "avg_rss_mb": 47.44166666666667, + "avg_cpu_pct": 100.55366666666667, + "peak_cpu_pct": 101.83, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test3", + "attempt": 3, + "reqs_per_sec": 23124.794953050914, + "latency_avg_ms": 5.538737688, + "latency_p50_ms": 5.482, + "latency_p75_ms": 5.639, + "latency_p90_ms": 6.991, + "latency_p99_ms": 8.412, + "failed_rate": 0.0, + "total_requests": 1389778, + "is_best": true, + "peak_rss_mb": 47.65, + "avg_rss_mb": 47.279333333333334, + "avg_cpu_pct": 100.435, + "peak_cpu_pct": 101.7, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test4", + "attempt": 1, + "reqs_per_sec": 22056.118694566743, + "latency_avg_ms": 5.800508482000001, + "latency_p50_ms": 5.717, + "latency_p75_ms": 5.967, + "latency_p90_ms": 6.654, + "latency_p99_ms": 8.624, + "failed_rate": 0.0, + "total_requests": 1324779, + "is_best": false, + "peak_rss_mb": 51.41, + "avg_rss_mb": 51.138387096774196, + "avg_cpu_pct": 97.10258064516128, + "peak_cpu_pct": 102.58, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test4", + "attempt": 2, + "reqs_per_sec": 22129.702859694484, + "latency_avg_ms": 5.786846931, + "latency_p50_ms": 5.701, + "latency_p75_ms": 5.945, + "latency_p90_ms": 6.638, + "latency_p99_ms": 8.617, + "failed_rate": 0.0, + "total_requests": 1329067, + "is_best": true, + "peak_rss_mb": 51.46, + "avg_rss_mb": 51.11266666666666, + "avg_cpu_pct": 100.67733333333334, + "peak_cpu_pct": 102.17, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "robyn", + "test": "test4", + "attempt": 3, + "reqs_per_sec": 22034.22366153708, + "latency_avg_ms": 5.8103835639999994, + "latency_p50_ms": 5.724, + "latency_p75_ms": 5.982, + "latency_p90_ms": 6.665, + "latency_p99_ms": 8.662, + "failed_rate": 0.0, + "total_requests": 1323819, + "is_best": false, + "peak_rss_mb": 51.43, + "avg_rss_mb": 51.14266666666666, + "avg_cpu_pct": 100.89833333333333, + "peak_cpu_pct": 102.48, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 robyn-2026.11.13.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test1", + "attempt": 1, + "reqs_per_sec": 39686.698395454914, + "latency_avg_ms": 3.327257657, + "latency_p50_ms": 3.181, + "latency_p75_ms": 3.407, + "latency_p90_ms": 3.929, + "latency_p99_ms": 10.532, + "failed_rate": 0.0, + "total_requests": 2384620, + "is_best": false, + "peak_rss_mb": 615.3, + "avg_rss_mb": 387.48709677419356, + "avg_cpu_pct": 97.61516129032259, + "peak_cpu_pct": 102.44, + "cpu_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2582\u2583\u2583\u2583\u2583\u2584\u2584\u2584\u2585\u2585\u2585\u2586\u2587\u2587\u2588\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test1", + "attempt": 2, + "reqs_per_sec": 41701.66919789731, + "latency_avg_ms": 3.0634693229999996, + "latency_p50_ms": 3.132, + "latency_p75_ms": 3.392, + "latency_p90_ms": 3.52, + "latency_p99_ms": 4.861, + "failed_rate": 0.0, + "total_requests": 2506238, + "is_best": true, + "peak_rss_mb": 615.2, + "avg_rss_mb": 614.7199999999999, + "avg_cpu_pct": 101.61366666666666, + "peak_cpu_pct": 103.28, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test1", + "attempt": 3, + "reqs_per_sec": 41444.810144271316, + "latency_avg_ms": 3.084387435, + "latency_p50_ms": 3.148, + "latency_p75_ms": 3.399, + "latency_p90_ms": 3.528, + "latency_p99_ms": 4.94, + "failed_rate": 0.0, + "total_requests": 2488289, + "is_best": false, + "peak_rss_mb": 615.1, + "avg_rss_mb": 614.56, + "avg_cpu_pct": 101.37566666666666, + "peak_cpu_pct": 103.02, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test2", + "attempt": 1, + "reqs_per_sec": 25980.058373852244, + "latency_avg_ms": 5.0150509780000005, + "latency_p50_ms": 4.954, + "latency_p75_ms": 5.024, + "latency_p90_ms": 5.752, + "latency_p99_ms": 14.224, + "failed_rate": 0.0, + "total_requests": 1561282, + "is_best": false, + "peak_rss_mb": 631.3, + "avg_rss_mb": 630.7290322580644, + "avg_cpu_pct": 97.80322580645162, + "peak_cpu_pct": 101.81, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test2", + "attempt": 2, + "reqs_per_sec": 26719.688119809878, + "latency_avg_ms": 4.778014691, + "latency_p50_ms": 4.96, + "latency_p75_ms": 5.021, + "latency_p90_ms": 5.439, + "latency_p99_ms": 7.321, + "failed_rate": 0.0, + "total_requests": 1604414, + "is_best": false, + "peak_rss_mb": 631.5, + "avg_rss_mb": 631.13, + "avg_cpu_pct": 101.11366666666666, + "peak_cpu_pct": 102.31, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test2", + "attempt": 3, + "reqs_per_sec": 26775.579183908114, + "latency_avg_ms": 4.768775565, + "latency_p50_ms": 4.954, + "latency_p75_ms": 5.016, + "latency_p90_ms": 5.434, + "latency_p99_ms": 7.308, + "failed_rate": 0.0, + "total_requests": 1608684, + "is_best": true, + "peak_rss_mb": 631.6, + "avg_rss_mb": 631.1566666666666, + "avg_cpu_pct": 100.90599999999999, + "peak_cpu_pct": 102.48, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test3", + "attempt": 1, + "reqs_per_sec": 19434.183756192066, + "latency_avg_ms": 6.625035042, + "latency_p50_ms": 6.341, + "latency_p75_ms": 6.575, + "latency_p90_ms": 6.92, + "latency_p99_ms": 15.442, + "failed_rate": 0.0, + "total_requests": 1167467, + "is_best": false, + "peak_rss_mb": 659.5, + "avg_rss_mb": 658.9774193548387, + "avg_cpu_pct": 97.37645161290322, + "peak_cpu_pct": 102.17, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2587\u2587\u2588\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test3", + "attempt": 2, + "reqs_per_sec": 19933.178405934195, + "latency_avg_ms": 6.411246262, + "latency_p50_ms": 6.359, + "latency_p75_ms": 6.582, + "latency_p90_ms": 6.775, + "latency_p99_ms": 9.788, + "failed_rate": 0.0, + "total_requests": 1197752, + "is_best": false, + "peak_rss_mb": 659.7, + "avg_rss_mb": 659.0766666666666, + "avg_cpu_pct": 101.01066666666667, + "peak_cpu_pct": 102.37, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test3", + "attempt": 3, + "reqs_per_sec": 19957.90392113652, + "latency_avg_ms": 6.4004049059999994, + "latency_p50_ms": 6.35, + "latency_p75_ms": 6.578, + "latency_p90_ms": 6.749, + "latency_p99_ms": 9.8, + "failed_rate": 0.0, + "total_requests": 1198790, + "is_best": true, + "peak_rss_mb": 659.9, + "avg_rss_mb": 659.3, + "avg_cpu_pct": 101.18299999999999, + "peak_cpu_pct": 102.24, + "cpu_spark": "\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test4", + "attempt": 1, + "reqs_per_sec": 20062.62594442873, + "latency_avg_ms": 6.370784086, + "latency_p50_ms": 6.154, + "latency_p75_ms": 6.351, + "latency_p90_ms": 6.742, + "latency_p99_ms": 10.416, + "failed_rate": 0.0, + "total_requests": 1205354, + "is_best": false, + "peak_rss_mb": 675.7, + "avg_rss_mb": 671.8612903225807, + "avg_cpu_pct": 97.85774193548387, + "peak_cpu_pct": 103.53, + "cpu_spark": "\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2584", + "mem_spark": "\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test4", + "attempt": 2, + "reqs_per_sec": 20116.51877010843, + "latency_avg_ms": 6.360960608, + "latency_p50_ms": 6.121, + "latency_p75_ms": 6.315, + "latency_p90_ms": 6.748, + "latency_p99_ms": 10.517, + "failed_rate": 0.0, + "total_requests": 1208461, + "is_best": false, + "peak_rss_mb": 672.5, + "avg_rss_mb": 671.9833333333333, + "avg_cpu_pct": 100.99233333333333, + "peak_cpu_pct": 102.89, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + }, + { + "framework": "spring-boot", + "test": "test4", + "attempt": 3, + "reqs_per_sec": 20193.967559598506, + "latency_avg_ms": 6.326162075999999, + "latency_p50_ms": 6.118, + "latency_p75_ms": 6.308, + "latency_p90_ms": 6.714, + "latency_p99_ms": 10.288, + "failed_rate": 0.0, + "total_requests": 1212507, + "is_best": true, + "peak_rss_mb": 672.6, + "avg_rss_mb": 671.9066666666666, + "avg_cpu_pct": 101.04166666666667, + "peak_cpu_pct": 103.34, + "cpu_spark": "\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587", + "mem_spark": "\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2588\u2587\u2587\u2587\u2587", + "images": "postgres-2026.11.13.01 upstream-2026.10.28.01 runner-2026.10.28.01 spring-boot-2026.10.28.01", + "commit": "da79feb0b9b01df770d967f77b2ad5cfdd6d4c8d" + } + ] +} \ No newline at end of file