Skip to content

Add nestjs framework - #1116

Merged
MDA2AV merged 2 commits into
MDA2AV:mainfrom
nigrosimone:add-nestjs
Aug 14, 2026
Merged

Add nestjs framework#1116
MDA2AV merged 2 commits into
MDA2AV:mainfrom
nigrosimone:add-nestjs

Conversation

@nigrosimone

@nigrosimone nigrosimone commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Description

Adds NestJS 11 on the Express platform adapter, standard mode.

  • meta.json: TS / flagship / standard, subscribed to baseline, pipelined, limited-conn, json, json-comp and upload
  • src/: controller with the Nest routing and @Param / @Query / @Header decorators, compression middleware for json-comp, cluster module for multi-core
  • Body parsers are off and the POST endpoints read the raw stream, same as the fastify entry

./scripts/validate.sh nestjs passes locally, 23 checks.

Disclaimer

I am neither the maintainer nor affiliated in any way with this framework. I did my best to implement it correctly, using Opus 5 as a guide.

@nigrosimone
nigrosimone marked this pull request as ready for review August 14, 2026 05:47
@nigrosimone

Copy link
Copy Markdown
Contributor Author

/benchmark -f nestjs --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: nestjs | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 430,068 6519.0% 8.6GiB ~0% ~0%
baseline 4096 413,334 6414.6% 9.3GiB ~0% ~0%
pipelined 512 884,996 6613.7% 9.3GiB ~0% ~0%
pipelined 4096 880,666 6533.9% 9.4GiB ~0% ~0%
limited-conn 512 244,377 4466.9% 8.7GiB ~0% ~0%
limited-conn 4096 256,857 4495.7% 8.7GiB ~0% ~0%
json 4096 366,074 6354.0% 8.8GiB ~0% ~0%
json-comp 512 60,658 6450.9% 7.8GiB ~0% ~0%
json-comp 4096 50,402 6471.3% 8.0GiB ~0% ~0%
json-comp 16384 52,963 6474.9% 8.8GiB ~0% ~0%
upload 32 1,780 5912.6% 6.7GiB ~0% ~0%
upload 256 1,855 6531.2% 7.4GiB ~0% ~0%
Full log
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32 (0/thread)
  Pipeline:  1
  Req/conn:  5
  Templates: 4
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   18.41ms   13.80ms   43.90ms   64.10ms   78.30ms

  8674 requests in 5.00s, 8674 responses
  Throughput: 1.73K req/s
  Bandwidth:  444.11KB/s
  Status codes: 2xx=8674, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 8674 / 8674 responses (100.0%)
  Reconnects: 1733
  Per-template: 2160,2144,2183,2187
  Per-template-ok: 2160,2144,2183,2187
[info] CPU 5681.0% | Mem 6.4GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32 (0/thread)
  Pipeline:  1
  Req/conn:  5
  Templates: 4
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   17.95ms   13.60ms   43.20ms   63.10ms   78.40ms

  8900 requests in 5.00s, 8900 responses
  Throughput: 1.78K req/s
  Bandwidth:  455.66KB/s
  Status codes: 2xx=8900, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 8900 / 8900 responses (100.0%)
  Reconnects: 1784
  Per-template: 2217,2205,2229,2249
  Per-template-ok: 2217,2205,2229,2249
[info] CPU 5912.6% | Mem 6.7GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32 (0/thread)
  Pipeline:  1
  Req/conn:  5
  Templates: 4
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   17.94ms   13.40ms   43.00ms   63.30ms   80.20ms

  8892 requests in 5.00s, 8892 responses
  Throughput: 1.78K req/s
  Bandwidth:  455.23KB/s
  Status codes: 2xx=8892, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 8892 / 8892 responses (100.0%)
  Reconnects: 1779
  Per-template: 2210,2206,2232,2244
  Per-template-ok: 2210,2206,2232,2244
[info] CPU 5636.8% | Mem 6.3GiB

=== Best: 1780 req/s (CPU: 5912.6%, Mem: 6.7GiB) ===
[info] input BW: 14.12GB/s (avg template: 8516680 bytes)
[info] saved results/upload/32/nestjs.json
httparena-bench-nestjs
httparena-bench-nestjs

==============================================
=== nestjs / upload / 256c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   139.44ms   80.40ms   358.30ms   662.90ms   852.70ms

  8954 requests in 5.00s, 8956 responses
  Throughput: 1.79K req/s
  Bandwidth:  458.47KB/s
  Status codes: 2xx=8956, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 8956 / 8956 responses (100.0%)
  Reconnects: 1735
  Per-template: 1959,2328,2484,2185
  Per-template-ok: 1959,2328,2484,2185
[info] CPU 6405.2% | Mem 7.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   134.98ms   80.40ms   330.90ms   646.90ms   906.90ms

  9276 requests in 5.00s, 9276 responses
  Throughput: 1.85K req/s
  Bandwidth:  474.79KB/s
  Status codes: 2xx=9276, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 9275 / 9276 responses (100.0%)
  Reconnects: 1814
  Per-template: 2079,2407,2536,2253
  Per-template-ok: 2079,2407,2536,2253
[info] CPU 6531.2% | Mem 7.4GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   135.00ms   80.30ms   344.40ms   640.40ms   839.30ms

  9236 requests in 5.00s, 9236 responses
  Throughput: 1.84K req/s
  Bandwidth:  472.76KB/s
  Status codes: 2xx=9236, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 9235 / 9236 responses (100.0%)
  Reconnects: 1801
  Per-template: 2070,2404,2519,2242
  Per-template-ok: 2070,2404,2519,2242
[info] CPU 6338.8% | Mem 7.0GiB

=== Best: 1855 req/s (CPU: 6531.2%, Mem: 7.4GiB) ===
[info] input BW: 14.71GB/s (avg template: 8516680 bytes)
[info] saved results/upload/256/nestjs.json
httparena-bench-nestjs
httparena-bench-nestjs
[info] skip: nestjs does not subscribe to api-4
[info] skip: nestjs does not subscribe to api-16
[info] skip: nestjs does not subscribe to static
[info] skip: nestjs does not subscribe to static-tls
[info] skip: nestjs does not subscribe to async-db
[info] skip: nestjs does not subscribe to crud
[info] skip: nestjs does not subscribe to fortunes
[info] skip: nestjs does not subscribe to baseline-h2
[info] skip: nestjs does not subscribe to static-h2
[info] skip: nestjs does not subscribe to baseline-h2c
[info] skip: nestjs does not subscribe to json-h2c
[info] skip: nestjs does not subscribe to baseline-h3
[info] skip: nestjs does not subscribe to static-h3
[info] skip: nestjs does not subscribe to gateway-64
[info] skip: nestjs does not subscribe to gateway-h3
[info] skip: nestjs does not subscribe to production-stack
[info] skip: nestjs does not subscribe to unary-grpc
[info] skip: nestjs does not subscribe to unary-grpc-tls
[info] skip: nestjs does not subscribe to stream-grpc
[info] skip: nestjs does not subscribe to stream-grpc-tls
[info] skip: nestjs does not subscribe to echo-ws
[info] skip: nestjs does not subscribe to echo-ws-pipeline
[info] skip: nestjs does not subscribe to echo-ws-limited
[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/nestjs.json - 12 new, 12 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@MDA2AV
MDA2AV merged commit 64a5b51 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