Fibre SPSC benchmarks

one producer, one consumer

Throughput in Melem/s: Million items per second per item sent, median of samples. The best result in each row is highlighted. In batched tables, the bracketed figure is the gain over the same implementation's single-item row. A dash means the implementation has no channel for that cell. Measured on MacBook M4 Pro (14 cores).

sync

CapacityP×Cfibrecrossbeamflumekanalstd
rendezvous1x10.5610.5160.4517.160.509
11x10.2637.900.6758.570.281
1281x130.046.930.125.953.1
10241x146.674.66.2351.8118.4
unbounded1x1-144.16.59145.2138.5

Unreliable, sample spread over 2x on a 1×1 cell where the rest of the matrix holds within a few percent: kanal at capacity unbounded (2.0x, 90.4 to 181.6). Those medians do not support a comparison.

sync, batched (512 items per call)

CapacityP×Cfibreflume
1281x124.5 (0.8x)19.9 (0.7x)
10241x1470.4 (10.1x)77.1 (12.4x)
unbounded1x1-113.6 (17.2x)

Native batch: fibre none, flume receive only.

async

CapacityP×Cfibreasync-channelflumekanaltokio
rendezvous1x124.3-7.5820.6-
11x111.63.577.6726.47.77
1281x1109.125.140.583.833.6
10241x1154.920.020.686.722.7
unbounded1x1-30.151.9105.864.1

async, batched (512 items per call)

CapacityP×Cfibreflumetokio
1281x1174.3 (1.6x)56.0 (1.4x)45.7 (1.4x)
10241x1223.8 (1.4x)58.1 (2.8x)43.2 (1.9x)
unbounded1x1-90.1 (1.7x)111.6 (1.7x)

Native batch: fibre none, flume receive only, tokio receive only.