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.
Achievements
🥉 2 Bronze. Top three of a field, taken in this entry's own league: the family composite, the same composite among entries written in the same language, and each test profile it is scored on. Every field is the one the badges publish, so a medal and a badge always say the same thing. How medals are awarded.
| Medal | Award | Field | Rank |
|---|---|---|---|
| 🥉 Bronze | Family composite | Composite · WebSocket | 3 of 18 |
| 🥉 Bronze | Test profile | WebSocket · Echo Pipelined | 3 of 18 |
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, less 2.5% for each of routing, middleware, request and response the entry does not do for you - its completeness factor, which the WebSocket and gRPC families do not carry. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.
| Family | Rank | Composite |
|---|---|---|
| WebSocket | 3 of 18 | 2368 |
Every result
Alpha Round, 8 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 | 4,329,153 | 117us | 149us | 6423.5% | 43MiB |
| WebSocket | Echo | 4,096 | 4,287,978 | 945us | 1.02ms | 6098.0% | 102MiB |
| WebSocket | Echo | 16,384 | 4,066,664 | 3.90ms | 4.18ms | 6409.7% | 373MiB |
| WebSocket | Echo Pipelined | 512 | 65,963,734 | 123us | 157us | 6470.8% | 41MiB |
| WebSocket | Echo Pipelined | 4,096 | 64,150,975 | 1.02ms | 1.14ms | 6159.6% | 121MiB |
| WebSocket | Echo Pipelined | 16,384 | 60,761,495 | 4.23ms | 7.52ms | 6290.3% | 373MiB |
| WebSocket | Echo Short-lived | 512 | 1,013,549 | 48us | 111us | 3477.0% | 1.2GiB |
| WebSocket | Echo Short-lived | 4,096 | 1,012,444 | 49us | 125us | 3453.3% | 746MiB |
Compare vanilla-ws with any V entry · Compare vanilla-ws with any entry, in any language · Every V entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry