GET /pipeline endpoint that returns a fixed response, isolating raw I/O and pipeline handling from application logic. Frameworks that batch pipelined requests from the read buffer gain a significant advantage.")
+ (dict "id" "async-db" "label" "Async DB" "conns" (slice 256 1024 4096) "desc" "Async Postgres query over 100K rows with no index on price, forcing a sequential scan per request. The framework manages its own connection pool and uses an async Postgres driver. Measures event loop scheduling, connection pooling efficiency, and async I/O throughput. Framework-only — engines are excluded.")
}}
{{/* Build JSON data blob for round switching */}}
From 884070d9d5b5b066217fd1c52e50785cb696d007 Mon Sep 17 00:00:00 2001
From: BennyFranciscus <268274351+BennyFranciscus@users.noreply.github.com>
Date: Thu, 26 Mar 2026 12:47:51 +0000
Subject: [PATCH 2/2] aspnet and actix
---
README.md | 2 +-
frameworks/actix/Cargo.toml | 2 +
frameworks/actix/meta.json | 1 +
frameworks/actix/src/main.rs | 86 ++++++++++++++++++-
frameworks/aspnet-minimal/AppData.cs | 19 ++++
frameworks/aspnet-minimal/Handlers.cs | 35 ++++++++
frameworks/aspnet-minimal/Program.cs | 1 +
.../aspnet-minimal/aspnet-minimal.csproj | 1 +
frameworks/aspnet-minimal/meta.json | 1 +
frameworks/express/server.js | 6 +-
scripts/benchmark.sh | 8 +-
scripts/validate.sh | 30 ++++---
site/content/_index.md | 7 +-
.../add-framework/test-profiles/_index.md | 2 +-
.../test-profiles/h1/async-database.md | 10 +--
site/data/async-db-1024.json | 62 +++++++++++++
site/data/async-db-2048.json | 22 +++++
site/data/async-db-256.json | 22 +++++
site/data/async-db-512.json | 62 +++++++++++++
site/data/baseline-16384.json | 22 ++++-
site/data/baseline-4096.json | 22 ++++-
site/data/baseline-512.json | 22 ++++-
site/data/compression-16384.json | 22 ++++-
site/data/compression-4096.json | 22 ++++-
site/data/current.json | 2 +-
site/data/json-16384.json | 22 ++++-
site/data/json-4096.json | 22 ++++-
site/data/limited-conn-4096.json | 22 ++++-
site/data/limited-conn-512.json | 22 ++++-
site/data/noisy-16384.json | 22 ++++-
site/data/noisy-4096.json | 22 ++++-
site/data/noisy-512.json | 22 ++++-
site/data/pipelined-16384.json | 22 ++++-
site/data/pipelined-4096.json | 22 ++++-
site/data/pipelined-512.json | 22 ++++-
.../shortcodes/leaderboard-composite.html | 2 +-
site/layouts/shortcodes/leaderboard.html | 2 +-
site/static/logs/async-db/1024/actix.log | 0
.../logs/async-db/1024/aspnet-minimal.log | 0
site/static/logs/async-db/1024/express.log | 0
.../logs/async-db/2048/aspnet-minimal.log | 0
.../logs/async-db/256/aspnet-minimal.log | 0
site/static/logs/async-db/512/actix.log | 0
.../logs/async-db/512/aspnet-minimal.log | 0
site/static/logs/async-db/512/express.log | 0
45 files changed, 665 insertions(+), 50 deletions(-)
create mode 100644 site/data/async-db-1024.json
create mode 100644 site/data/async-db-2048.json
create mode 100644 site/data/async-db-256.json
create mode 100644 site/data/async-db-512.json
create mode 100644 site/static/logs/async-db/1024/actix.log
create mode 100644 site/static/logs/async-db/1024/aspnet-minimal.log
create mode 100644 site/static/logs/async-db/1024/express.log
create mode 100644 site/static/logs/async-db/2048/aspnet-minimal.log
create mode 100644 site/static/logs/async-db/256/aspnet-minimal.log
create mode 100644 site/static/logs/async-db/512/actix.log
create mode 100644 site/static/logs/async-db/512/aspnet-minimal.log
create mode 100644 site/static/logs/async-db/512/express.log
diff --git a/README.md b/README.md
index a4bc5aaa..29c33843 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@ Tag **@BennyFranciscus** on your PR for help with implementation or benchmark qu
| Category | Profiles | Description |
|----------|----------|-------------|
| Connection | Baseline (512-32K), Pipelined, Limited | Performance scaling with connection count |
-| Workload | JSON, Compression, Upload, Database | Serialization, gzip, I/O, queries |
+| Workload | JSON, Compression, Upload, Database, Async DB | Serialization, gzip, I/O, SQLite queries, async Postgres |
| Resilience | Noisy, Mixed | Malformed requests, concurrent endpoints |
| Protocol | HTTP/2, HTTP/3, gRPC, WebSocket | Multi-protocol support |
diff --git a/frameworks/actix/Cargo.toml b/frameworks/actix/Cargo.toml
index edfa35da..4f8c8dbc 100644
--- a/frameworks/actix/Cargo.toml
+++ b/frameworks/actix/Cargo.toml
@@ -12,6 +12,8 @@ serde = { version = "1", features = ["derive"] }
serde_json = "1"
num_cpus = "1"
rusqlite = { version = "0.31", features = ["bundled"] }
+tokio-postgres = { version = "0.7", features = ["with-serde_json-1"] }
+deadpool-postgres = { version = "0.14", features = ["rt_tokio_1"] }
[profile.release]
opt-level = 3
diff --git a/frameworks/actix/meta.json b/frameworks/actix/meta.json
index 341fabf8..c61ac4ea 100644
--- a/frameworks/actix/meta.json
+++ b/frameworks/actix/meta.json
@@ -15,6 +15,7 @@
"upload",
"compression",
"mixed",
+ "async-db",
"baseline-h2",
"static-h2"
]
diff --git a/frameworks/actix/src/main.rs b/frameworks/actix/src/main.rs
index 4312b1d2..b6302f07 100644
--- a/frameworks/actix/src/main.rs
+++ b/frameworks/actix/src/main.rs
@@ -1,5 +1,6 @@
use actix_web::http::header::{ContentType, HeaderValue, SERVER};
use actix_web::{web, App, HttpRequest, HttpResponse, HttpServer};
+use deadpool_postgres::{Manager, ManagerConfig, Pool, RecyclingMethod};
use rusqlite::Connection;
use rustls::ServerConfig;
use serde::{Deserialize, Serialize};
@@ -226,7 +227,16 @@ async fn compression(state: web::Data