vanilla-ws
Engine · V · engine: epoll
WebSocket echo on vanilla's conn-mode seam: one epoll engine, two protocols on the same connection. The HTTP handler validates the RFC 6455 upgrade as a pure function, appends the 101 and hands the connection over (core.queue_takeover); from then on every readable burst is fed to a ConnHandler instead of the HTTP/1.1 state machine. The websocket module is a pure RFC 6455 codec (accept-key, frame-head parsing, in-place unmasking, unmasked server-frame writers). Read buffering/compaction, batched flushes and EPOLLOUT backpressure are the engine's own, so a pipelined burst of frames is drained in one handler call and coalesced into one write. Multi-threaded, SO_REUSEPORT, lock-free, -gc none.
Composite rank
Each profile of a family is worth 100 to the entry that leads it, and the composite is the sum over the family. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.
| Family | Rank | Composite |
|---|---|---|
| WebSocket | 5 of 9 | 188 |
Every result
Alpha Round, 6 runs. Requests per second is the best of three; latency, CPU and memory come from that run.
| Category | Profile | Conns | Req/sec | Avg | p99 | CPU | Memory |
|---|---|---|---|---|---|---|---|
| WebSocket | Echo | 512 | 3,911,720 | 130us | 585us | 6402.2% | 58MiB |
| WebSocket | Echo | 4,096 | 4,378,205 | 931us | 6.50ms | 6432.2% | 147MiB |
| WebSocket | Echo | 16,384 | 4,095,404 | 3.92ms | 10.90ms | 6424.7% | 455MiB |
| WebSocket | Echo Pipelined | 512 | 59,233,593 | 137us | 711us | 6447.9% | 57MiB |
| WebSocket | Echo Pipelined | 4,096 | 65,026,006 | 998us | 6.56ms | 6271.7% | 138MiB |
| WebSocket | Echo Pipelined | 16,384 | 61,723,418 | 4.18ms | 11.20ms | 6169.0% | 465MiB |
How the benchmark is run · The machine · Add or fix an entry