文档进阶主题批量导入

批量导入

性能差异及原因

当需要向文档导入多份更新时,调用 doc.importBatch(updates) 比逐条导入快得多。这种性能差异来自两种方式在合并数据时的开销差异。

const  = new ();
.("text").("Hello");
const  = .({ : "update" });
const  = .();
.("text").("Hello World");
const  = .({ : "update", :  });
 
const  = new ();
.([, ]); // 更快
 
const  = new ();
for (const  of [, ]) { // 更慢
  .();
}

批量导入的核心优势

1. 只需一次 diff 计算

最大的优势是批量导入只计算一次 diff。单次导入则需要依次执行:

  • 将远端更新合并进本地历史;
  • 计算当前版本到合并后版本之间的状态变更;
  • 将 diff 应用到当前文档状态。

diff 计算有固定开销,逐条导入会重复支付。而 doc.importBatch(...) 只做一次 diff,自然更快。

2. 降低事件沟通成本

批量导入还会生成更精简的事件。逐条导入每次都会产生一个新事件,而 doc.importBatch(...) 只创建一个包含所有变更的事件。