19 puan yazan xguru 2021-08-02 | 2 yorum | WhatsApp'ta paylaş
  • Mevcut CRDT kütüphanelerindeki sorunları bulup çözerek onları daha hızlı hale getirme sürecini anlatan bir yazı

→ Test benchmark'ı: 180 bin karakter giriş, 70 bin karakter silme, 100 bin kez imleç taşıma

→ Automerge'e kıyasla 5000x daha hızlı (5 dakika vs. 56ms)

  • Automerge neden yavaş?

→ Belge büyüdükçe içteki ağaç tabanlı veri yapısı büyüyor ve yavaşlıyor

→ ImmutableJS yoğun kullanılıyor; özellikleri iyi olsa da yavaş ve bellek kullanımı yüksek

→ Girilen her karakteri ayrı bir öğe olarak işliyor

→ Automerge şu anda performansı iyileştirilmiş Rust sürümünü ayrıca geliştiriyor

  • Yjs kütüphanesi, Automerge'den çok daha hızlı

→ Veri yapısını iyileştirmiş

  • Diamond Types: Rust tabanlı bir CRDT gerçekleştirmesi

→ Dili Rust'a geçirip Yjs'teki gibi veri yapısını iyileştirerek daha hızlı hale getirmiş

→ Linked list yerine Range Tree kullanıyor

→ Wasm ile çalıştırıldığında JS'teki string değişikliklerinden 3 kat daha hızlı (0.19s, Automerge'den 1500 kat hızlı)

→ Rust Native ile çalıştırıldığında 0.056s ile 5000 kat daha hızlı

Ek A - Uygulamamda CRDT kullanacaksam neyi tercih etmeliyim?

  • Belge tabanlı işbirliği aracı yapacaksanız "Yjs öneriliyor". Performansı iyi ve bellek kullanımı düşük. Daha da hızlanması bekleniyor

  • Elbette Automerge de harika. Muhtemelen bu yıl daha da hızlanacak

  • Diamond gerçekten çok hızlı, ancak hâlâ birçok özelliğin eklenmesi gerekiyor

  • Belge semantiği yerine DB semantiği istiyorsanız, OT tabanlı olsa da ShareDB öneriliyor

  • Redwood umut veriyor

2 yorum

 
xguru 2021-08-02

Bu yazı, aşağıdaki yazının yazarı olan Google Wave geliştiricisi Joseph Gentle’ın en yeni yazısıdır. Önce onu okumanız faydalı olacaktır.

 
alstjr7375 2021-08-02

Xi Editor'ın geliştiricisi Raph Levien'in yazısı da göz atmaya değer.

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