The charts were measured before the bundled Beast headers were removed. Standalone HTTP/WebSocket results apply only to that measured revision; current builds use Boost.
Local Results
Release local loopback: 1024-byte binary messages, 16 clients, window 16 and no extra application computation.
WebSocket
- Four contexts/one thread each has the highest throughput median for both dependency combinations.
- Standalone’s lowest p99 median belongs to four contexts/one thread each; Boost’s belongs to two contexts/one thread each, whose run range overlaps four contexts/one thread each.
- With one client and window 1, one context/four threads has lower throughput medians than one context/one thread for both dependency combinations.
WSS
- Four contexts/one thread each has the highest throughput median and lowest p99 median for both dependency combinations.
- WSS has lower throughput medians than plaintext WebSocket at the same load and thread model.
Complete WebSocket report · Complete WSS report
Test environment · Metrics and statistics
Payload, batch and execution comparisons · WSS comparison
Reproduce the IO Comparison
Build from the repository root with Boost.
With Visual Studio, add
--config Release to the build command and run the executable under
benchmarks/Release/. Windows executables end in .exe.
cmake -S . -B build-perf -DCMAKE_BUILD_TYPE=Release \
-DARKNET_BUILD_BENCHMARKS=ON -DARKNET_ENABLE_SSL=OFF \
-DARKNET_USE_BOOST_ASIO=ON
cmake --build build-perf --target arknet_loopback_benchmark --parallel 3
build-perf/benchmarks/arknet_loopback_benchmark \
--protocol websocket --payload 1024 --clients 16 --window 16 \
--io-model shared --io-threads 1 --work 0 --warmup 0.25 --seconds 1This configuration uses 1024-byte binary messages, 16 clients, window 16 and
one context/one thread, writing JSON to standard output. Repeat each
configuration three times in fresh processes. Change --io-threads to 2 or 4
for a shared context, or use --io-model sharded --io-threads 4 for four
contexts/one thread each. --work 10000 adds 10,000 deterministic iterations
per server echo; 0 adds no application computation. The complete shell matrix
is in Testing. One connection remains
serialized; see IO models for workload choices.
Enable TLS
Use --protocol wss --certs tests/certs in a TLS-enabled build.
WSS verifies test certificates; see the WSS report for
results and TLS performance for the build commands.
This test measures binary echoes after upgrade, excluding browser scheduling, upgrade rate, idle connections, compression, ping/pong, authentication, fan-out and slow peers. The dependency combinations use different Asio/Beast versions, so differences cannot be attributed solely to dependency selection.
See testing, WebSocket tests and benchmark source.