Skip to content

fulmine: 5.11.0, and /pipeline written so it compiles - #1117

Merged
MDA2AV merged 2 commits into
MDA2AV:mainfrom
nigrosimone:fulmine-declarative
Aug 14, 2026
Merged

fulmine: 5.11.0, and /pipeline written so it compiles#1117
MDA2AV merged 2 commits into
MDA2AV:mainfrom
nigrosimone:fulmine-declarative

Conversation

@nigrosimone

Copy link
Copy Markdown
Contributor

fulmine.js 5.11.0, and one change to the entry.

/pipeline was going through the ordinary router rather than through the declarative response this entry's README claims for it. The compiler reads the handler's source and cannot see into a closure, so res.set(SERVER_HDR) kept it off that path. Written out as a literal it is compiled at listen() and answered by uWS without entering JavaScript.

Standard mode as before: the same documented APIs, no new setting, and nothing the entry precomputes itself. If you read a compiled handler as a pre-computed response body under the workload rules, say so and I will put it back.

5.11.0 also gives a compiled route a Content-Length, so its framing now matches Express, and it is what the entry runs with.

@nigrosimone
nigrosimone marked this pull request as ready for review August 14, 2026 06:01
@nigrosimone

Copy link
Copy Markdown
Contributor Author

benchmark -f fulmine --save

@MDA2AV

MDA2AV commented Aug 14, 2026

Copy link
Copy Markdown
Owner

/benchmark -f fulmine --save

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: fulmine | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,316,432 6771.4% 2.6GiB +0.9% ~0%
baseline 4096 1,291,467 6611.5% 2.7GiB +1.2% ~0%
pipelined 512 31,111,097 6772.4% 2.1GiB +271.1% -19.2%
pipelined 4096 30,786,291 6649.9% 2.1GiB +269.3% -19.2%
limited-conn 512 1,081,000 6199.2% 2.7GiB +0.2% ~0%
limited-conn 4096 1,165,391 6459.0% 2.7GiB +0.3% ~0%
json 4096 1,100,962 6659.2% 8.1GiB +0.1% ~0%
json-comp 512 330,916 6167.8% 8.3GiB +0.6% +1.2%
json-comp 4096 337,261 6376.9% 9.0GiB +0.2% ~0%
json-comp 16384 352,702 6336.0% 10.4GiB +0.5% ~0%
json-tls 4096 1,033,394 6587.0% 8.0GiB ~0% ~0%
upload 32 2,041 3049.3% 6.6GiB +0.1% -2.9%
upload 256 2,146 6050.2% 7.2GiB +0.2% ~0%
api-4 256 33,513 366.3% 536MiB -7.8% ~0%
api-16 1024 122,528 1525.0% 2.1GiB -0.1% -4.5%
static 1024 361,003 6566.3% 6.4GiB -0.1% ~0%
static 4096 471,584 6586.5% 7.7GiB -0.2% -1.3%
static 6800 516,134 6525.1% 7.6GiB ~0% ~0%
static-tls 1024 315,147 6566.7% 6.3GiB -0.2% ~0%
static-tls 4096 395,095 6474.6% 7.3GiB +0.4% ~0%
static-tls 6800 416,223 6457.7% 7.4GiB -0.4% ~0%
async-db 1024 227,845 5655.9% 4.3GiB +0.4% +16.2%
crud 4096 357,239 4417.9% 8.1GiB -1.1% ~0%
fortunes 1024 68,103 6504.6% 4.3GiB +0.5% ~0%
gateway-64 512 89,306 4289.1% 4.7GiB ~0% -2.1%
gateway-64 1024 79,999 4080.9% 6.6GiB -4.2% ~0%
gateway-h3 64 90,476 3522.4% 2.9GiB +0.8% -3.3%
gateway-h3 256 61,473 2566.4% 4.1GiB -0.5% -2.4%
production-stack 256 32,959 3035.1% 1.5GiB -43.7% -54.5%
production-stack 1024 33,521 3142.8% 2.4GiB -36.2% -50.0%
echo-ws 512 3,725,045 6428.5% 2.4GiB ~0% ~0%
echo-ws 4096 3,799,864 6543.1% 2.4GiB ~0% ~0%
echo-ws 16384 3,586,189 6497.1% 2.5GiB +1.1% ~0%
echo-ws-pipeline 512 24,900,399 6797.5% 2.4GiB -0.2% ~0%
echo-ws-pipeline 4096 24,972,233 6602.8% 2.4GiB +0.1% ~0%
echo-ws-pipeline 16384 23,843,945 6345.5% 2.6GiB +0.7% ~0%
echo-ws-limited 512 2,083,660 5494.4% 2.4GiB -0.4% ~0%
echo-ws-limited 4096 2,565,878 6042.3% 2.4GiB ~0% ~0%
Full log
[info] CPU 6779.6% | Mem 2.6GiB

[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   11.36ms   11.00ms   13.10ms   17.10ms   21.20ms

  114574368 frames sent in 5.00s, 114312224 frames received
  Throughput: 22.86M req/s
  Bandwidth:  153.10MB/s
  WS upgrades: 16384
  WS frames:   114312224
  Latency samples: 114312224 / 114312224 responses (100.0%)
[info] CPU 6468.3% | Mem 2.6GiB

=== Best: 23843945 req/s (CPU: 6345.5%, Mem: 2.6GiB) ===
[info] saved results/echo-ws-pipeline/16384/fulmine.json
httparena-bench-fulmine
httparena-bench-fulmine

==============================================
=== fulmine / echo-ws-limited / 512c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     512 (8/thread)
  Pipeline:  1
  Req/conn:  10
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    144us    119us    254us    515us   1.34ms

  10418206 frames sent in 5.00s, 10418300 frames received
  Throughput: 2.08M req/s
  Bandwidth:  46.89MB/s
  WS upgrades: 1055473
  WS frames:   10418300
  Latency samples: 10418259 / 10418300 responses (100.0%)
  Reconnects: 1041861
[info] CPU 5494.4% | Mem 2.4GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     512 (8/thread)
  Pipeline:  1
  Req/conn:  10
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    139us    114us    246us    499us   1.19ms

  10261880 frames sent in 5.00s, 10261966 frames received
  Throughput: 2.05M req/s
  Bandwidth:  46.18MB/s
  WS upgrades: 1040494
  WS frames:   10261966
  Latency samples: 10261923 / 10261966 responses (100.0%)
  Reconnects: 1026244
[info] CPU 5555.2% | Mem 2.4GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     512 (8/thread)
  Pipeline:  1
  Req/conn:  10
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    143us    118us    253us    518us   1.39ms

  10365601 frames sent in 5.00s, 10365668 frames received
  Throughput: 2.07M req/s
  Bandwidth:  46.65MB/s
  WS upgrades: 1049833
  WS frames:   10365668
  Latency samples: 10365631 / 10365668 responses (100.0%)
  Reconnects: 1036588
[info] CPU 5469.4% | Mem 2.4GiB

=== Best: 2083660 req/s (CPU: 5494.4%, Mem: 2.4GiB) ===
[info] saved results/echo-ws-limited/512/fulmine.json
httparena-bench-fulmine
httparena-bench-fulmine

==============================================
=== fulmine / echo-ws-limited / 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:  1
  Req/conn:  10
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.06ms    960us   1.65ms   2.87ms   5.86ms

  12745165 frames sent in 5.00s, 12743343 frames received
  Throughput: 2.55M req/s
  Bandwidth:  57.41MB/s
  WS upgrades: 1278079
  WS frames:   12743344
  Latency samples: 12743316 / 12743343 responses (100.0%)
  Reconnects: 1273658

  WARNING: 18446744073709551615/12743343 responses (144755925299268.4%) had unexpected status (expected 2xx)
[info] CPU 5949.5% | Mem 2.4GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.04ms    961us   1.64ms   2.66ms   4.34ms

  12818859 frames sent in 5.00s, 12819545 frames received
  Throughput: 2.56M req/s
  Bandwidth:  57.70MB/s
  WS upgrades: 1289688
  WS frames:   12819545
  Latency samples: 12819492 / 12819545 responses (100.0%)
  Reconnects: 1282232
[info] CPU 6250.2% | Mem 2.4GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.04ms    976us   1.64ms   2.64ms   4.52ms

  12828887 frames sent in 5.00s, 12829392 frames received
  Throughput: 2.56M req/s
  Bandwidth:  57.76MB/s
  WS upgrades: 1287794
  WS frames:   12829393
  Latency samples: 12829747 / 12829392 responses (100.0%)
  Reconnects: 1283546

  WARNING: 18446744073709551615/12829392 responses (143785021719731.9%) had unexpected status (expected 2xx)
[info] CPU 6042.3% | Mem 2.4GiB

=== Best: 2565878 req/s (CPU: 6042.3%, Mem: 2.4GiB) ===
[info] saved results/echo-ws-limited/4096/fulmine.json
httparena-bench-fulmine
httparena-bench-fulmine
[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/results/fulmine.json - 38 new, 38 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV
MDA2AV merged commit d49cb36 into MDA2AV:main Aug 14, 2026
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