From 1850a985b50e46cc06ebab8387e594270d7baad8 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Fri, 6 Mar 2026 21:02:57 +0100 Subject: [PATCH] =?UTF-8?q?perf:=20replace=20O(n=C2=B2)=20unshift=20with?= =?UTF-8?q?=20O(n)=20push+reverse=20in=20buildMessages=20(#22280)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Array.unshift() is O(n) per call because it shifts all existing elements. In a loop building an n-element array, this makes the total cost O(n²). Replace with push() + reverse() which is O(n) total. Produces the identical message ordering. --- src/lib/components/chat/Messages.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/components/chat/Messages.svelte b/src/lib/components/chat/Messages.svelte index dbd8daa16e..e8ada5c57c 100644 --- a/src/lib/components/chat/Messages.svelte +++ b/src/lib/components/chat/Messages.svelte @@ -90,11 +90,11 @@ } visitedMessageIds.add(message.id); - _messages.unshift(message); + _messages.push(message); message = message.parentId !== null ? history.messages[message.parentId] : null; } - messages = _messages; + messages = _messages.reverse(); }; // Throttle message list rebuilds to once per animation frame during streaming.