# operators — benchmark summary Per-operator comparison rolled up across every peer measured in `bench:ops`. **Peer range** is the fastest-peer through slowest-peer time. **Multiplier** is `peer_time / data_time` — values > 1× mean the peer takes more time than `data`; values < 1× mean the peer is faster. Each operator's detailed table lives in `operators//BENCHMARK.md`. Generated by `node comparisons/bench/operators/_gen-bench-md.mjs` from a `bench:ops` markdown dump. Re-run after any operator-level perf change. ## Single-tick (one row mutation + read) | Operator | data (ms) | Peer range (ms) | Multiplier range | |---|---:|---|---| | [aggregate](aggregate/BENCHMARK.md) | 0.059 | 0.260 – 23.87 | 4.4× – 405× | | [between](between/BENCHMARK.md) | 0.037 | 0.400 – 7.61 | 10.8× – 206× | | [compare](compare/BENCHMARK.md) | 0.020 | 0.278 – 6.86 | 13.9× – 343× | | [distinct](distinct/BENCHMARK.md) | 0.014 | 0.387 – 17.37 | 27.6× – 1241× | | [except](except/BENCHMARK.md) | 0.118 | 0.405 – 19.56 | 3.4× – 166× | | [filter](filter/BENCHMARK.md) | 0.008 | 0.290 – 13.37 | 36.3× – 1671× | | [group](group/BENCHMARK.md) | 0.005 | 0.565 – 11.55 | 113× – 2310× | | [intersect](intersect/BENCHMARK.md) | 0.126 | 0.434 – 17.08 | 3.4× – 136× | | [keys](keys/BENCHMARK.md) | 0.020 | 0.163 – 7.07 | 8.2× – 354× | | [length](length/BENCHMARK.md) | 0.103 | 0.004 – 3.20 | 0.04× – 31.1× | | [map](map/BENCHMARK.md) | 0.012 | 0.589 – 22.82 | 49.1× – 1902× | | [reduce](reduce/BENCHMARK.md) | 0.005 | 0.015 – 21.39 | 3.0× – 4278× | | [reverse](reverse/BENCHMARK.md) | 0.010 | 0.042 – 10.42 | 4.2× – 1042× | | [sort](sort/BENCHMARK.md) | 0.274 | 4.46 – 115.03 | 16.3× – 420× | | [tap](tap/BENCHMARK.md) | 0.006 | 0.008 – 11.25 | 1.3× – 1875× | | [to](to/BENCHMARK.md) | 0.012 | 0.004 – 1.72 | 0.33× – 143× | | [union](union/BENCHMARK.md) | 0.084 | 0.407 – 15.41 | 4.8× – 183× | ## Batch (1000 ticks streamed back-to-back) | Operator | data (ms) | Peer range (ms) | Multiplier range | |---|---:|---|---| | [aggregate](aggregate/BENCHMARK.md) | 2.66 | 31.48 – 1924.02 | 11.8× – 723× | | [between](between/BENCHMARK.md) | 1.88 | 42.78 – 1027.83 | 22.8× – 547× | | [compare](compare/BENCHMARK.md) | 1.80 | 49.21 – 631.37 | 27.3× – 351× | | [distinct](distinct/BENCHMARK.md) | 1.59 | 51.47 – 1544.65 | 32.4× – 971× | | [except](except/BENCHMARK.md) | 3.17 | 22.38 – 597.91 | 7.1× – 189× | | [filter](filter/BENCHMARK.md) | 2.52 | 63.95 – 882.92 | 25.4× – 350× | | [group](group/BENCHMARK.md) | 1.04 | 51.24 – 1716.77 | 49.3× – 1651× | | [intersect](intersect/BENCHMARK.md) | 2.35 | 16.53 – 1036.09 | 7.0× – 441× | | [keys](keys/BENCHMARK.md) | 2.15 | 208.33 – 16385.94 | 96.9× – 7621× | | [length](length/BENCHMARK.md) | 4.81 | 19.77 – 2150.13 | 4.1× – 447× | | [map](map/BENCHMARK.md) | 3.37 | 126.69 – 1994.22 | 37.6× – 592× | | [reduce](reduce/BENCHMARK.md) | 1.44 | 27.06 – 42561.31 | 18.8× – 29556× | | [reverse](reverse/BENCHMARK.md) | 5.57 | 72.01 – 18155.75 | 12.9× – 3260× | | [sort](sort/BENCHMARK.md) | 166.55 | 507.64 – 8036.67 | 3.0× – 48.3× | | [tap](tap/BENCHMARK.md) | 1.08 | 10.11 – 1872.97 | 9.4× – 1734× | | [to](to/BENCHMARK.md) | 1.39 | 1.50 – 151.56 | 1.1× – 109× | | [union](union/BENCHMARK.md) | 2.98 | 23.79 – 744.26 | 8.0× – 250× | ## Reading the multiplier - **> 1×** — peer is slower than `data` by that factor. Most rows. - **< 1×** — peer is faster than `data` (rare; flagged in the operator's own BENCHMARK.md). At time of writing this applies to `length` single and `to` single — both at the sub-µs scale where measurement noise and signal-equality short-circuits in peer libs dominate. Both win on the batch metric. ## Refresh ```sh npm run bench:ops > /tmp/bench.md node comparisons/bench/operators/_gen-bench-md.mjs /tmp/bench.md ``` Patches every `operators//BENCHMARK.md` table in place and regenerates this file.