Files
bux-lang/benches
dimgigov e30d8a5eb9 feat(nexus): HTTP/1.1 keep-alive (~2× throughput)
Reuse TCP connections for multiple requests, honor Connection close,
and raise wrk health RPS from ~45k to ~80k+ on the same machine.

- Loop HandleConnection up to 1000 reqs/fd with Connection keep-alive
- RawRequest_WantsKeepAlive (HTTP/1.1 default; HTTP/1.0 needs keep-alive)
- Nexus 0.3.0 banner; benches note before/after RPS
2026-07-19 22:53:59 +03:00
..

Bux benchmarks (E.5)

Micro-kernels + optional Nexus HTTP throughput for regression and language comparison.

Quick run

# From repo root
make bench              # Bux micro + C + Nim (+ Zig if installed)
make bench-nexus        # wrk vs apps/nexus /api/health
BENCH_NEXUS=1 make bench

Micro suites

Suite Kernels Build
micro/ Bux: int_loop, fib30, string_concat, array_push buxc build
c/ C: fib30, int_loop gcc -O2
nim/ Nim twins nim c -d:release --opt:speed
zig/ Zig twins (optional) zig build-exe -OReleaseFast

Output lines:

BENCH <name> iters=N total_us=T us_per_op=P

Nexus throughput

tools/bench_nexus.sh / make bench-nexus:

  1. Builds apps/nexus
  2. Starts on NEXUS_PORT (default 18080), bind 127.0.0.1
  3. wrk -t4 -c64 -d5s against /api/health
  4. Prints BENCH nexus_health rps=…

Env knobs:

Variable Default Meaning
NEXUS_PORT 18080 Listen port (also used by the server binary)
NEXUS_WORKERS 4 Worker threads
NEXUS_BENCH_DURATION 5s wrk -d
NEXUS_BENCH_C 64 wrk connections
NEXUS_BENCH_T 4 wrk threads

Server-side (any nexus run):

  • NEXUS_PORT, NEXUS_WORKERS, NEXUS_BIND, NEXUS_PUBLIC

Notes

  • Numbers vary by machine; use them relatively (same host, same day).
  • Nexus v0.3 uses HTTP/1.1 keep-alive (default). Sample RPS on one machine:
    • close-only era: ~45k req/s
    • keep-alive: ~80k+ req/s (wrk -t4 -c64 -d5s /api/health)
  • Requires wrk for bench-nexus (apt install wrk on Debian/Ubuntu).