19 poin oleh xguru 2021-08-02 | 2 komentar | Bagikan ke WhatsApp
  • Tulisan yang menjelaskan proses menemukan dan menyelesaikan masalah pada library CRDT yang ada agar menjadi lebih cepat

→ Benchmark pengujian: input 180 ribu karakter, penghapusan 70 ribu karakter, perpindahan kursor 100 ribu kali

→ 5000x lebih cepat dibanding Automerge (5 menit vs. 56ms)

  • Mengapa Automerge lambat?

→ Semakin besar dokumen, semakin besar dan lambat struktur data internal berbasis tree

→ Banyak menggunakan ImmutableJS; fiturnya bagus, tetapi lambat dan penggunaan memorinya besar

→ Setiap karakter yang dimasukkan diproses sebagai item terpisah

→ Automerge saat ini juga sedang mengimplementasikan versi Rust terpisah dengan performa yang ditingkatkan

  • Library Yjs jauh lebih cepat daripada Automerge

→ Struktur datanya diperbaiki

  • Diamond Types: implementasi CRDT berbasis Rust

→ Diubah ke Rust dan struktur datanya diperbaiki seperti Yjs agar menjadi lebih cepat

→ Menggunakan Range Tree alih-alih linked list

→ Saat dijalankan dengan Wasm, 3x lebih cepat daripada perubahan string di JS (0.19s, 1500x lebih cepat daripada Automerge)

→ Saat dijalankan sebagai Rust Native, 0.056s atau 5000x lebih cepat

Lampiran A - Jika ingin memakai CRDT di aplikasi saya, sebaiknya pakai apa?

  • Jika membuat alat kolaborasi berbasis dokumen, "Yjs direkomendasikan". Performanya bagus dan penggunaan memorinya kecil. Ke depannya akan jadi lebih cepat

  • Tentu saja Automerge juga sangat bagus. Kemungkinan akan menjadi lebih cepat tahun ini

  • Diamond memang sangat cepat, tetapi masih perlu banyak penambahan fitur

  • Jika menginginkan semantik DB ketimbang semantik dokumen, meski berbasis OT, ShareDB direkomendasikan

  • Menantikan Redwood

2 komentar

 
xguru 2021-08-02

Tulisan ini adalah artikel terbaru dari Joseph Gentle, pengembang Google Wave yang juga penulis artikel di bawah ini. Sebaiknya dibaca terlebih dahulu.

 
alstjr7375 2021-08-02

Tulisan Raph Levien, pengembang Xi Editor, juga layak dijadikan referensi.

https://github.com/xi-editor/xi-editor/…