19 पॉइंट द्वारा xguru 2021-08-02 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • मौजूदा CRDT लाइब्रेरीज़ की समस्याएँ खोजकर उन्हें हल करते हुए उन्हें और तेज़ बनाने की प्रक्रिया समझाने वाला लेख

→ टेस्ट benchmark: 1.8 लाख अक्षरों का इनपुट, 70 हज़ार अक्षरों का deletion, 1 लाख बार cursor movement

→ Automerge की तुलना में 5000x तेज़ (5 मिनट vs. 56ms)

  • Automerge धीमा क्यों है?

→ दस्तावेज़ बड़ा होने के साथ उसकी आंतरिक tree-based data structure भी बड़ी होती जाती है और धीमी पड़ती है

→ यह ImmutableJS का बहुत उपयोग करता है; फीचर अच्छे हैं, लेकिन यह धीमा है और memory usage भी ज़्यादा है

→ दर्ज किए गए हर character को अलग item के रूप में प्रोसेस करता है

→ Automerge फिलहाल performance में सुधार वाला Rust version अलग से implement कर रहा है

  • Yjs लाइब्रेरी Automerge की तुलना में काफ़ी तेज़ है

→ data structure में सुधार

  • Diamond Types: Rust-आधारित CRDT implementation

→ भाषा को Rust में बदलकर और Yjs की तरह data structure सुधारकर इसे और तेज़ बनाया गया

→ linked list की जगह Range Tree का उपयोग

→ Wasm में चलाने पर JS में string बदलाव से 3 गुना तेज़ (0.19s, Automerge से 1500 गुना)

→ Rust Native में चलाने पर 0.056s, यानी 5000 गुना तेज़

परिशिष्ट A - अगर मुझे अपने ऐप में CRDT इस्तेमाल करना हो, तो क्या चुनना चाहिए?

  • अगर आप document-based collaboration tool बना रहे हैं, तो "Yjs की सिफारिश"। performance अच्छा है, memory usage कम है। आगे और तेज़ होने की उम्मीद है

  • बेशक Automerge भी शानदार है। शायद इस साल और तेज़ हो जाएगा

  • Diamond वाकई बहुत तेज़ है, लेकिन अभी इसमें कई फीचर और जोड़ने बाकी हैं

  • अगर आपको document semantics की बजाय DB semantics चाहिए, तो OT-आधारित होने के बावजूद ShareDB की सिफारिश है

  • Redwood का इंतज़ार है

2 टिप्पणियां

 
xguru 2021-08-02

यह लेख नीचे दिए गए लेख के लेखक, Google Wave डेवलपर Joseph Gentle का नवीनतम लेख है। इसे पहले पढ़ लें तो बेहतर होगा.

 
alstjr7375 2021-08-02

Xi Editor के डेवलपर Raph Levien की यह पोस्ट भी देखने लायक है.

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