mipyre
Experimental · Python · tuned configuration · completeness 4/4
mipyre — Python web framework with a Rust core (hyper + tokio + rustls + mimalloc): one pinned thread per physical core, each with its own PEP 684 sub-interpreter, so Python handlers run on every core at once. Opt-in features: gzip/brotli compression, rustls TLS with h2/h1 ALPN, precompressed static files, async Postgres via sqlx. Handlers are standard Python functions routed via decorators.
Achievements
🥇 1 Gold. Top three of a field, taken in this entry's own league: the family composite, the same composite among entries written in the same language, and each test profile it is scored on. Every field is the one the badges publish, so a medal and a badge always say the same thing. How medals are awarded.
| Medal | Award | Field | Rank |
|---|---|---|---|
| 🥇 Gold | Test profile | Efficiency · Latency-10K | 1 of 24 |
Composite rank
Each profile of a family is worth 100 to the entry that leads it, and the composite is the sum over the family, less 2.5% for each of routing, middleware, request and response the entry does not do for you - its completeness factor, which the WebSocket and gRPC families do not carry. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.
| Family | Rank | Composite |
|---|---|---|
| HTTP/1.1 | 18 of 26 | 4185 |
| HTTP/2 | 10 of 13 | 1251 |
| gRPC | 7 of 7 | 952 |
Every result
Alpha Round, 27 runs. Requests per second is the best of three; latency, CPU and memory come from that run.
| Category | Profile | Conns | Req/sec | Avg | p99 | CPU | Memory |
|---|---|---|---|---|---|---|---|
| Connection | Baseline | 4,096 | 1,633,016 | 2.51ms | 4.62ms | 3281.1% | 1.0GiB |
| Connection | Pipelined | 4,096 | 13,166,198 | 4.98ms | 5.85ms | 3219.9% | 1.0GiB |
| Connection | Short-lived | 4,096 | 1,235,159 | 3.31ms | 12.70ms | 3265.7% | 1.0GiB |
| Concurrency | Async Delay | 32,000 | 238,348 | 132.59ms | 217.40ms | 1809.1% | 2.7GiB |
| Efficiency | Latency-10K | 1,024 | 9,983 | 81.3us | 136.0us | 34.8% | 801MiB |
| Efficiency | Latency-1M | 1,024 | 997,756 | 106.4us | 189.0us | 2267.2% | 803MiB |
| Efficiency | Latency-500K/8 | 1,024 | 237,554 | 5192181.3us | 11014144.0us | 387.6% | 204MiB |
| Workload | JSON Comp | 4,096 | 376,239 | 10.87ms | 30.00ms | 3143.7% | 1.1GiB |
| Workload | JSON Comp | 16,384 | 366,785 | 44.24ms | 93.90ms | 3131.4% | 1.9GiB |
| Workload | JSON TLS | 4,096 | 695,282 | 5.86ms | 30.40ms | 3369.1% | 1011MiB |
| Workload | 8Gbit | 512 | 49,365 | 92.9us | 116.0us | 207.0% | 779MiB |
| Workload | Static TLS | 1,024 | 1,054,130 | 0.93ms | 11.63ms | 3301.9% | 962MiB |
| Database | Async DB | 1,024 | 78,742 | 12.66ms | 66.40ms | 2076.0% | 862MiB |
| Database | Fortunes | 1,024 | 39,297 | 25.45ms | 35.80ms | 2799.9% | 891MiB |
| HTTP/2 | Baseline | 256 | 3,780,516 | 6.94ms | 24.81ms | 3161.6% | 922MiB |
| HTTP/2 | Baseline | 1,024 | 3,147,140 | 30.05ms | 102.57ms | 3210.7% | 1.4GiB |
| HTTP/2 | Static | 256 | 940,351 | 8.21ms | 120.92ms | 3136.9% | 1.0GiB |
| HTTP/2 | Static | 1,024 | 857,260 | 35.82ms | 88.12ms | 3218.0% | 1.3GiB |
| HTTP/2 | Baseline (h2c) | 256 | 3,859,204 | 6.99ms | 17.20ms | 3165.9% | 950MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 3,190,394 | 30.52ms | 59.55ms | 3211.1% | 1.4GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 3,073,490 | 128.29ms | 240.62ms | 3207.9% | 3.5GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 835,982 | 38.18ms | 88.35ms | 3213.8% | 1.1GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 802,823 | 155.53ms | 312.31ms | 3214.9% | 2.0GiB |
| gRPC | Unary | 256 | 3,762,683 | 7.03ms | 19.47ms | 3207.6% | 1.0GiB |
| gRPC | Unary | 1,024 | 2,975,838 | 32.62ms | 75.13ms | 3208.9% | 1.6GiB |
| gRPC | Unary TLS | 256 | 3,638,369 | 7.06ms | 15.19ms | 3210.2% | 1022MiB |
| gRPC | Unary TLS | 1,024 | 2,885,069 | 32.73ms | 93.24ms | 3208.5% | 1.7GiB |
Compared with
The Python entries around mipyre on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs mipyre | |
|---|---|---|---|
| fastpysgi-wsgi | 3110 | -26% | head to head |
| mq-bridge-py | 2109 | -50% | head to head |
Compare mipyre with any Python entry · Compare mipyre with any entry, in any language · Every Python entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry