Skip to content

Commit 3e65271

Browse files
committed
perf: skip deep clone while streaming
Use direct reference while streaming; deep clone once on completion.
1 parent 6233aa6 commit 3e65271

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,17 @@
120120
export let selectedModels = [];
121121
122122
let message: MessageType = JSON.parse(JSON.stringify(history.messages[messageId]));
123+
let streaming = false;
124+
123125
$: if (history.messages) {
124-
if (JSON.stringify(message) !== JSON.stringify(history.messages[messageId])) {
125-
message = JSON.parse(JSON.stringify(history.messages[messageId]));
126+
const source = history.messages[messageId];
127+
if (source && !source.done) {
128+
// Skip deep clone while streaming
129+
message = source;
130+
streaming = true;
131+
} else if (streaming || JSON.stringify(message) !== JSON.stringify(source)) {
132+
message = JSON.parse(JSON.stringify(source));
133+
streaming = false;
126134
}
127135
}
128136

0 commit comments

Comments
 (0)