From 1b89bee09826ee017ab439bab98e24a892e445bf Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Sun, 1 Mar 2026 19:44:59 +0100 Subject: [PATCH] perf: add fast-path comparison in MultiResponseMessages (#22100) Same optimization as ResponseMessage: add O(1) fast-path check on content and done fields before falling back to full JSON.stringify comparison. Avoids expensive serialization when only content changes during streaming. --- .../chat/Messages/MultiResponseMessages.svelte | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lib/components/chat/Messages/MultiResponseMessages.svelte b/src/lib/components/chat/Messages/MultiResponseMessages.svelte index 87a46ce9b5..ae2be93ff2 100644 --- a/src/lib/components/chat/Messages/MultiResponseMessages.svelte +++ b/src/lib/components/chat/Messages/MultiResponseMessages.svelte @@ -62,8 +62,13 @@ let message = structuredClone(history.messages[messageId]); $: if (history.messages) { - if (JSON.stringify(message) !== JSON.stringify(history.messages[messageId])) { - message = structuredClone(history.messages[messageId]); + const source = history.messages[messageId]; + if (source) { + if (message.content !== source.content || message.done !== source.done) { + message = structuredClone(source); + } else if (JSON.stringify(message) !== JSON.stringify(source)) { + message = structuredClone(source); + } } }