Skip to content

Commit 3253be7

Browse files
committed
perf: shallow spread in streaming fast path
1 parent ec8fac1 commit 3253be7

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

src/lib/components/chat/Messages/MultiResponseMessages.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@
6464
$: if (history.messages) {
6565
const source = history.messages[messageId];
6666
if (source) {
67-
if (message.content !== source.content || message.done !== source.done) {
68-
message = structuredClone(source);
67+
if (message.content !== source.content || message.done !== source.done) {
68+
message = { ...source };
6969
} else if (JSON.stringify(message) !== JSON.stringify(source)) {
7070
message = structuredClone(source);
7171
}

src/lib/components/chat/Messages/ResponseMessage.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@
126126
// Fast path: O(1) check on the fields that change most often (content during streaming, done at end)
127127
// Avoids 2x O(n) JSON.stringify calls that are always true during streaming anyway
128128
if (message.content !== source.content || message.done !== source.done) {
129-
message = structuredClone(source);
129+
message = { ...source };
130130
} else if (JSON.stringify(message) !== JSON.stringify(source)) {
131131
// Slow path: full comparison for infrequent changes (sources, annotations, status, etc.)
132132
message = structuredClone(source);

0 commit comments

Comments
 (0)