From a25ecfa85664d13db8cd514c9945873e940abb4c Mon Sep 17 00:00:00 2001 From: Algorithm5838 <108630393+Algorithm5838@users.noreply.github.com> Date: Fri, 6 Mar 2026 23:08:12 +0300 Subject: [PATCH] perf: skip token parsing when raw content is unchanged (#22183) --- src/lib/components/chat/Messages/Markdown.svelte | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/lib/components/chat/Messages/Markdown.svelte b/src/lib/components/chat/Messages/Markdown.svelte index 1085ee7c59..ed1a0c505c 100644 --- a/src/lib/components/chat/Messages/Markdown.svelte +++ b/src/lib/components/chat/Messages/Markdown.svelte @@ -36,6 +36,8 @@ let tokens = []; let pendingUpdate = null; + let lastContent = ''; + let lastParsedContent = ''; const options = { throwOnError: false, @@ -56,7 +58,14 @@ }); const parseTokens = () => { - tokens = marked.lexer(replaceTokens(processResponseContent(content), model?.name, $user?.name)); + if (content === lastContent) return; + lastContent = content; + + const processed = replaceTokens(processResponseContent(content), model?.name, $user?.name); + if (processed === lastParsedContent) return; + lastParsedContent = processed; + + tokens = marked.lexer(processed); }; const updateHandler = (content) => {