Which library implements which primitive, and which was fastest in the selected run. A checkmark means the library has been benchmarked for that primitive in some recorded run; the ★ marks the fastest ranked implementation in each row.
Click a library to hide or show its column. Pooled, Nito.AsyncEx, ProtoPromise, RefImpl and System stay pinned leftmost and can't be hidden.
"Fastest" is taken from the scenario closest to normal use: one contending party with a live, uncancelled token where measured. Averaging over every
contention level would let whichever variant scales worst dominate; the trends dashboard's
"Scaling by contention" view shows that instead.
See also the trends dashboard and the
speed differences. The raw baselines some classes record
(Interlocked, lock, SpinLock) are not primitives and are left out.
n/c (non-competing, hors concours) cells are measured and shown for scale
but held out of the comparison, because they skip work the others pay for on every call: the
vendored RefImpl (no cancellation, timeout or pooling); DotNext's
AsyncExclusiveLock and reader-writer lock (no disposable releaser); and "System" in
the AutoResetEvent, ManualResetEvent, Barrier and ReaderWriterLockSlim rows (a blocking wait).
Hover a cell for the reason.
† "System" primitive that may lack a true async wait, so its number is a
baseline rather than a fair race. ‡ ProtoPromise, which uses its own
Promise and cancellation token types rather than ValueTask and
CancellationToken, so it is not drop-in compatible.
Data: benchmark-history.sqlite, built from the benchmarks branch.