Automated benchmark report

Exceptional performance

Node.js 24.16.0 V8 13.6.233.17-node.49 win32 x64 Intel Core i5-10210U at 1.60 GHz 2026-08-02T22:01:31.679Z

JavaScript/WASM performance

FunctionSequence lengthTimed Sequencer workloadSequencer ops/secDiamond Types ops/secSequencer callsDiamond Types callsSequencer avg µs/opDiamond Types avg µs/opSequencer RMEDiamond Types RME
__create100Hydrate the retained Reel53,35931,03625625618.74132.221±15.10%±4.57%
__read100Read a rotating visible index10,493,179213,995131,0722560.095304.673±4.92%±18.45%
__length100Read the visible length36,429,87220,699,648131,072131,0720.027450.04831±5.51%±4.42%
__recover100Recover all retained values392,927222,6682562562.5454.491±1.95%±56.98%
__update100Insert one Frame at the midpoint163,532309,4062562566.1153.232±10.45%±9.03%
__delete100Soft-delete one midpoint Frame259,538290,6982562563.8533.440±11.08%±15.79%
__merge100Merge one new midpoint Frame116,90456,1172562568.55417.820±33.51%±21.39%
__acknowledge100Acknowledge materialized Realm progress6,729,4751,395,0894,0964,0960.14860.7168±4.23%±7.00%
__garbageCollect100Release one soft-deleted Frame270,8562563.692±19.72%
__snapshot100Snapshot complete retained state255,55873,7792562563.91313.554±19.95%±3.56%
__create1,000Hydrate the retained Reel79,85339,76912812812.52325.145±5.75%±6.84%
__read1,000Read a rotating visible index9,861,933434,97265,5361280.10142.299±11.97%±5.07%
__length1,000Read the visible length19,988,00726,567,48165,53665,5360.050030.03764±11.12%±8.72%
__recover1,000Recover all retained values164,663302,7551281286.0733.303±13.30%±3.86%
__update1,000Insert one Frame at the midpoint111,91948,9401281288.93520.433±11.75%±9.17%
__delete1,000Soft-delete one midpoint Frame302,66393,8531281283.30410.655±13.86%±5.49%
__merge1,000Merge one new midpoint Frame252,58937,5181281283.95926.654±9.56%±9.98%
__acknowledge1,000Acknowledge materialized Realm progress2,948,9831,162,5202,0482,0480.33910.8602±3.71%±5.96%
__garbageCollect1,000Release one soft-deleted Frame527,7041281.895±8.92%
__snapshot1,000Snapshot complete retained state156,71554,8641281286.38118.227±16.82%±4.00%
__create10,000Hydrate the retained Reel2,57317,2256464388.70258.055±66.53%±21.46%
__read10,000Read a rotating visible index5,020,080103,04032,768640.19929.705±9.58%±21.99%
__length10,000Read the visible length16,350,55612,603,98332,76832,7680.061160.07934±15.26%±16.01%
__recover10,000Recover all retained values16,344106,826646461.1839.361±17.86%±26.31%
__update10,000Insert one Frame at the midpoint38,4387,982646426.016125.289±39.17%±82.21%
__delete10,000Soft-delete one midpoint Frame172,89113,81964645.78472.364±40.84%±11.56%
__merge10,000Merge one new midpoint Frame46,10010,454646421.69295.656±55.93%±20.84%
__acknowledge10,000Acknowledge materialized Realm progress3,225,806968,0541,0241,0240.31001.033±11.50%±14.23%
__garbageCollect10,000Release one soft-deleted Frame46,8936421.325±107.46%
__snapshot10,000Snapshot complete retained state43,30122,213646423.09445.019±48.42%±37.33%
__create100,000Hydrate the retained Reel1421,43816167,056.825695.625±30.00%±56.66%
__read100,000Read a rotating visible index4,083,29910,0188,192160.244999.819±15.38%±31.71%
__length100,000Read the visible length12,274,4576,877,5798,1928,1920.081470.1454±6.06%±26.14%
__recover100,000Recover all retained values87817,33716161,138.74457.681±32.91%±14.07%
__update100,000Insert one Frame at the midpoint98,5801,812161610.144551.969±25.58%±12.35%
__delete100,000Soft-delete one midpoint Frame190,6941,93016165.244518.012±20.29%±8.73%
__merge100,000Merge one new midpoint Frame89,4851,372161611.175728.825±55.60%±21.61%
__acknowledge100,000Acknowledge materialized Realm progress4,182,3501,050,0892562560.23910.9523±5.96%±16.26%
__garbageCollect100,000Release one soft-deleted Frame320,616163.119±5.37%
__snapshot100,000Snapshot complete retained state1,5594,5581616641.431219.381±44.63%±29.69%
__create1,000,000Hydrate the retained Reel18267161656,965.9883,747.700±14.14%±10.55%
__read1,000,000Read a rotating visible index2,768,5497548,192160.36121,327.000±57.49%±25.38%
__length1,000,000Read the visible length22,381,3798,496,1778,1928,1920.044680.1177±7.55%±2.88%
__recover1,000,000Recover all retained values58897161617,147.7621,115.063±39.12%±24.01%
__update1,000,000Insert one Frame at the midpoint99,443246161610.0564,072.900±8.11%±9.25%
__delete1,000,000Soft-delete one midpoint Frame108,40126916169.2253,723.856±14.51%±11.97%
__merge1,000,000Merge one new midpoint Frame59,018262161616.9443,811.575±31.17%±14.74%
__acknowledge1,000,000Acknowledge materialized Realm progress6,385,6961,419,8492562560.15660.7043±15.48%±7.32%
__garbageCollect1,000,000Release one soft-deleted Frame235,627164.244±7.87%
__snapshot1,000,000Snapshot complete retained state15691216166,398.6561,096.031±39.13%±13.20%

Diamond Types 1.0.2: “The world's fastest CRDT. WIP.” Both implementations use one-character strings, the same logical Sequence lengths, midpoint mutations, warm-up sample counts, and measured sample counts. Each uses its public native snapshot and patch format. Diamond Types has no direct indexed-read API, so its read result calls get() before selecting one character; its clean-state get() is the closest recovery equivalent. Diamond Types exposes no public garbage-collection operation, shown as —.

Methodology: avg µs/op is the arithmetic mean of the measured per-call latencies. Ops/sec is its reciprocal; displayed values are rounded as one reciprocal pair. Setup, cleanup, and warmup calls are excluded. Mutating operations receive a fresh prepared state for every sample; read-only operations use stable state. Batch sizes only amortize timer overhead and are reported through call counts. These Node.js results do not represent browser runtimes.

Small bundle size

FormatRawMinifiedMinified + gzip
ESM91.3 kB53.8 kB19.0 kB
CommonJS91.6 kB56.3 kB19.3 kB

Compact data model

Reel workloadAverage bytes per operationMessagePackMessagePack + gzipGzip reduction
1,000 one-frame updates39.6 B39.6 kB7.8 kB80.2%
1,000 one-frame masks36.0 B36.0 kB5.1 kB85.9%
Snapshot containing 1,000 one-frame strips39.6 B39.6 kB7.8 kB80.2%

Reel sizes use MessagePack and gzip level 9 over the complete 1,000-operation collection. Gzip reduction is measured against the MessagePack payload.