From 40dad239af9b568c0ebc00ac5d734fa4fa92d93e Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Sat, 2 Apr 2022 12:36:55 -0700 Subject: [PATCH 1/2] perf: memoize encodeChange --- backend/columnar.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/columnar.js b/backend/columnar.js index 5052bf56e..491a2c103 100644 --- a/backend/columnar.js +++ b/backend/columnar.js @@ -708,6 +708,7 @@ function decodeContainerHeader(decoder, computeHash) { } function encodeChange(changeObj) { + if (encoded.has(changeObj)) return encoded.get(changeObj) const { changes, actorIds } = parseAllOpIds([changeObj], true) const change = changes[0] @@ -764,6 +765,7 @@ function decodeChangeColumns(buffer) { return change } +const encoded = new WeakMap // change => buffer /** * Decodes one change in binary format into its JS object representation. */ @@ -772,6 +774,7 @@ function decodeChange(buffer) { change.ops = decodeOps(decodeColumns(change.columns, change.actorIds, CHANGE_COLUMNS), false) delete change.actorIds delete change.columns + encoded.set(change, buffer) return change } From 76be8d8731323548131fb7094507164605c2b2ff Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Sat, 2 Apr 2022 13:43:41 -0700 Subject: [PATCH 2/2] lint --- backend/columnar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/columnar.js b/backend/columnar.js index 491a2c103..a5d8228a3 100644 --- a/backend/columnar.js +++ b/backend/columnar.js @@ -765,7 +765,7 @@ function decodeChangeColumns(buffer) { return change } -const encoded = new WeakMap // change => buffer +const encoded = new WeakMap() // change => buffer /** * Decodes one change in binary format into its JS object representation. */