Skip to content

Commit 597883a

Browse files
authored
perf: use structuredClone and fast-path comparison in UserMessage (open-webui#22098)
Same optimization as the merged ResponseMessage PR: replace JSON.parse(JSON.stringify()) with structuredClone and add an O(1) fast-path check on content before falling back to full JSON.stringify comparison.
1 parent 387225e commit 597883a

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,15 @@
5252
let messageEditTextAreaElement: HTMLTextAreaElement;
5353
let editScrollContainer: HTMLDivElement;
5454
55-
let message = JSON.parse(JSON.stringify(history.messages[messageId]));
55+
let message = structuredClone(history.messages[messageId]);
5656
$: if (history.messages) {
57-
if (JSON.stringify(message) !== JSON.stringify(history.messages[messageId])) {
58-
message = JSON.parse(JSON.stringify(history.messages[messageId]));
57+
const source = history.messages[messageId];
58+
if (source) {
59+
if (message.content !== source.content) {
60+
message = structuredClone(source);
61+
} else if (JSON.stringify(message) !== JSON.stringify(source)) {
62+
message = structuredClone(source);
63+
}
5964
}
6065
}
6166

0 commit comments

Comments
 (0)