automerge-perf
crdt-benchmarks
automerge-perf | crdt-benchmarks | |
---|---|---|
2 | 2 | |
35 | 24 | |
- | - | |
3.2 | 10.0 | |
7 months ago | 12 months ago | |
JavaScript | JavaScript | |
- | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
automerge-perf
-
Announcing crop, the fastest UTF-8 text rope for Rust
The automerge folks have a real-life editing history of a large document in their benchmarks: https://github.com/automerge/automerge-perf
-
You might not need a CRDT
This is an implementation problem with automerge. I wrote a blog post last year about CRDT performance. I re-ran the benchmarks a couple months ago. Automerge has improved a lot since then, but a simple benchmark test (automerge-perf[1]) still takes 200MB of RAM using automerge-rs. Yjs and Diamond types can run the same benchmark in 4mb / 2mb of ram respectively.
I've had a chat with some of the automerge people about it. They're working on it, and I've shared the techniques I'm using in diamond types (and all the code). Its just an implementation bottleneck.
[1] https://github.com/automerge/automerge-perf/
crdt-benchmarks
-
CRDT-richtext: Rust implementation of Peritext and Fugue
Diamond types author here! Congratulations on getting your crdt working! It’s lovely to see a new generation of CRDTs which have decent performance.
And nice stuff implementing peritext! I’d love to do the same in diamond types at some point. You beat me to it!
Im building a little repository of real world collaborative editing traces to use when benchmarking, comparing and optimising text based CRDTs[1]. The automerge-perf editing trace isn’t enough on its own. And we’re increasingly converging on a format for multi user concurrent editing traces too[2]. It’d be great to add some rich text editing traces in the mix if you’re interested in recording something, so we can also compare how peritext performs in different systems.
Anyway, welcome to the community! Love to have more implementations around!
https://github.com/josephg/crdt-benchmarks
https://github.com/dmonad/crdt-benchmarks/issues/20
-
Announcing crop, the fastest UTF-8 text rope for Rust
I have a few more real world editing traces that I use for jumprope in this repository: https://github.com/josephg/crdt-benchmarks
What are some alternatives?
jumprope-rs
electric_dart - A Dart implementation for Electric (electric-sql.com).
plane - A distributed system for running WebSocket services at scale.
electric - Local-first sync layer for web and mobile apps. Build reactive, realtime, local-first apps directly on Postgres.
pigeon - Diff, patch, merge, and synchronize JSON documents with an Automerge-compatible interface
editing-traces - Real world text editing traces for benchmarking CRDT and Rope data structures
crop - 🌾 A pretty fast text rope
statebox_riak - Convenience library that makes it easier to use statebox with riak, extracted from best practices in our production code at Mochi Media.
yjs-sqlite-test - Test combining yjs and sqlite wasm
crdt-richtext - Rich text CRDT that implements Peritext and Fugue
pg_crdt - POC CRDT support in Postgres