Skip to content

[C#] GenHTTP 11: Switch to new file handling#783

Merged
MDA2AV merged 2 commits into
MDA2AV:mainfrom
Kaliumhexacyanoferrat:genhttp-11-preview-12
Jun 2, 2026
Merged

[C#] GenHTTP 11: Switch to new file handling#783
MDA2AV merged 2 commits into
MDA2AV:mainfrom
Kaliumhexacyanoferrat:genhttp-11-preview-12

Conversation

@Kaliumhexacyanoferrat
Copy link
Copy Markdown
Collaborator

Description

Makes use of the new asset serving handlers based on fdout.


PR Commands — comment on this PR to trigger (requires collaborator approval):

Command Description
/benchmark -f <framework> Run all benchmark tests
/benchmark -f <framework> -t <test> Run a specific test
/benchmark -f <framework> --save Run and save results (updates leaderboard on merge)

Always specify -f <framework>. Results are automatically compared against the current leaderboard.


Run benchmarks locally

You can validate and benchmark your framework locally with the lite script — no CPU pinning, fixed connection counts, all load generators run in Docker.

./scripts/validate.sh <framework>
./scripts/benchmark-lite.sh <framework> baseline
./scripts/benchmark-lite.sh --load-threads 4 <framework>

Requirements: Docker Engine on Linux. Load generators (gcannon, h2load, h2load-h3, wrk, ghz) are built as self-contained Docker images on first run.

@Kaliumhexacyanoferrat Kaliumhexacyanoferrat self-assigned this Jun 2, 2026
@Kaliumhexacyanoferrat
Copy link
Copy Markdown
Collaborator Author

/benchmark -f genhttp-11 --save

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 2, 2026

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 2, 2026

⚠️ /benchmark --save aborted: main has diverged and cannot be auto-merged into this branch. Please merge or rebase main manually, push, and re-run /benchmark --save.

@Kaliumhexacyanoferrat
Copy link
Copy Markdown
Collaborator Author

/benchmark -f genhttp-11 --save

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 2, 2026

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 2, 2026

Benchmark Results

Framework: genhttp-11 | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,636,023 5518.6% 242MiB +10.7% ~0%
baseline 4096 1,640,007 5831.4% 635MiB +12.6% +27.0%
pipelined 512 18,899,720 6414.6% 74MiB +12.1% -3.9%
pipelined 4096 17,893,235 6324.4% 275MiB +11.3% +19.6%
limited-conn 512 1,005,446 5790.1% 207MiB +2.0% +1.5%
limited-conn 4096 975,145 5856.2% 346MiB +4.5% -0.6%
json 4096 778,082 6105.8% 501MiB +2.3% -0.6%
json-comp 512 445,455 5704.2% 241MiB +5.3% +0.4%
json-comp 4096 449,679 6081.2% 538MiB +4.7% -1.6%
json-comp 16384 442,775 5981.4% 1.3GiB +5.6% +30.0%
json-tls 4096 657,806 6149.6% 996MiB +6.7% +21.9%
upload 32 2,672 2524.1% 126MiB -0.1% +1.6%
upload 256 2,983 3937.2% 173MiB -0.8% -13.1%
api-4 256 57,139 400.7% 152MiB +17.4% +4.8%
api-16 1024 142,747 1569.7% 282MiB +6.4% +4.4%
static 1024 824,755 5652.8% 197MiB +64.0% -56.3%
static 4096 834,583 5989.3% 416MiB +115.7% -82.3%
static 6800 835,909 6088.0% 660MiB +135.8% -81.0%
async-db 1024 189,386 3297.1% 343MiB -0.4% -0.9%
crud 4096 481,343 4247.6% 649MiB +6.1% -2.8%
echo-ws 512 2,323,004 6057.1% 202MiB +11.2% +7.4%
echo-ws 4096 2,174,866 5476.1% 708MiB +4.7% +4.3%
echo-ws 16384 2,125,534 5814.0% 1.2GiB +15.4% -25.0%
echo-ws-pipeline 512 4,717,397 5983.6% 476MiB +17.6% +26.9%
echo-ws-pipeline 4096 4,568,791 5890.0% 1.1GiB +24.7% +37.7%
echo-ws-pipeline 16384 4,497,041 6102.0% 910MiB +24.4% -44.5%
Full log

  23592065 frames sent in 5.00s, 23586987 frames received
  Throughput: 4.72M req/s
  Bandwidth:  31.49MB/s
  WS upgrades: 512
  WS frames:   23586987
  Latency samples: 23586957 / 23586987 responses (100.0%)
[info] CPU 5983.6% | Mem 476MiB

=== Best: 4717397 req/s (CPU: 5983.6%, Mem: 476MiB) ===
[info] saved results/echo-ws-pipeline/512/genhttp-11.json
httparena-bench-genhttp-11
httparena-bench-genhttp-11

==============================================
=== genhttp-11 / echo-ws-pipeline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    969us    215us    306us   3.24ms   96.30ms

  20600571 frames sent in 5.00s, 20544628 frames received
  Throughput: 4.11M req/s
  Bandwidth:  27.55MB/s
  WS upgrades: 3704
  WS frames:   20544628
  Latency samples: 20544626 / 20544628 responses (100.0%)
[info] CPU 6044.1% | Mem 533MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.35ms    207us    251us   3.19ms   71.60ms

  22810606 frames sent in 5.00s, 22764336 frames received
  Throughput: 4.55M req/s
  Bandwidth:  30.48MB/s
  WS upgrades: 3559
  WS frames:   22764336
  Latency samples: 22764200 / 22764336 responses (100.0%)
[info] CPU 6246.3% | Mem 974MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    781us    203us    247us   2.30ms   26.90ms

  22890378 frames sent in 5.00s, 22843959 frames received
  Throughput: 4.57M req/s
  Bandwidth:  30.60MB/s
  WS upgrades: 3287
  WS frames:   22843959
  Latency samples: 22843886 / 22843959 responses (100.0%)
[info] CPU 5890.0% | Mem 1.1GiB

=== Best: 4568791 req/s (CPU: 5890.0%, Mem: 1.1GiB) ===
[info] saved results/echo-ws-pipeline/4096/genhttp-11.json
httparena-bench-genhttp-11
httparena-bench-genhttp-11

==============================================
=== genhttp-11 / echo-ws-pipeline / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   2.06ms    210us    326us   6.35ms   212.10ms

  20370889 frames sent in 5.00s, 20311171 frames received
  Throughput: 4.06M req/s
  Bandwidth:  27.25MB/s
  WS upgrades: 3734
  WS frames:   20311171
  Latency samples: 20311171 / 20311171 responses (100.0%)
[info] CPU 5772.5% | Mem 511MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.10ms    203us    251us   3.25ms    1.52s

  22581835 frames sent in 5.00s, 22485209 frames received
  Throughput: 4.50M req/s
  Bandwidth:  30.23MB/s
  WS upgrades: 6085
  WS frames:   22485209
  Latency samples: 22485209 / 22485209 responses (100.0%)
[info] CPU 6102.0% | Mem 910MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.80ms    204us    250us   3.27ms    1.00s

  22450261 frames sent in 5.00s, 22265034 frames received
  Throughput: 4.45M req/s
  Bandwidth:  30.14MB/s
  WS upgrades: 11578
  WS frames:   22265034
  Latency samples: 22265034 / 22265034 responses (100.0%)
[info] CPU 5830.4% | Mem 1.5GiB

=== Best: 4497041 req/s (CPU: 6102.0%, Mem: 910MiB) ===
[info] saved results/echo-ws-pipeline/16384/genhttp-11.json
httparena-bench-genhttp-11
httparena-bench-genhttp-11
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/crud-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@Kaliumhexacyanoferrat Kaliumhexacyanoferrat marked this pull request as ready for review June 2, 2026 14:38
@MDA2AV MDA2AV merged commit ab9cbed into MDA2AV:main Jun 2, 2026
@Kaliumhexacyanoferrat Kaliumhexacyanoferrat deleted the genhttp-11-preview-12 branch June 2, 2026 14:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants