瀏覽代碼

perf(session-projection): index contiguous restore tails

_Kerman 1 月之前
父節點
當前提交
265f02fbf5
共有 1 個文件被更改,包括 3 次插入 和 2 次删除
  1. 3 2
      packages/session/session-projection/src/index.ts

+ 3 - 2
packages/session/session-projection/src/index.ts

@@ -441,8 +441,9 @@ export class SessionProjectionRegistry extends Service {
       }
       let state = usable ? def.stateSchema.parse(row.val) : def.init()
       const from = usable ? row.seq : baseSeq - 1
-      for (const event of events) {
-        if (event.seq > from) state = def.apply(state, event)
+      const start = from - baseSeq + 1
+      for (let index = start; index < events.length; index++) {
+        state = def.apply(state, events[index]!)
       }
       if (def.wire !== undefined) values[def.key] = def.wire.viewSchema.parse(def.wire.view(state))
       refreshed[def.key] = { ver: def.stateVersion, seq: endSeq, val: state }