From 9c9b7c39927a3e2997947b11f5ef64005b79cdf3 Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Sun, 6 Sep 2026 20:26:47 +0800 Subject: [PATCH] perf(proxy): read delays once per latency sort --- src/components/proxy/use-filter-sort.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/components/proxy/use-filter-sort.ts b/src/components/proxy/use-filter-sort.ts index 20578c9ba..fcde83f58 100644 --- a/src/components/proxy/use-filter-sort.ts +++ b/src/components/proxy/use-filter-sort.ts @@ -91,21 +91,22 @@ function sortProxies( if (!proxies) return [] if (sortType === 0) return proxies - const list = proxies.slice() const effectiveTimeout = typeof latencyTimeout === 'number' && latencyTimeout > 0 ? latencyTimeout : DEFAULT_DELAY_TIMEOUT - if (sortType === 1) { - list.sort((a, b) => - compareByDelay( - delayManager.getDelayFix(a.member, groupName), - delayManager.getDelayFix(b.member, groupName), - effectiveTimeout, - ), - ) - } else { + if (sortType === 1 && proxies.length > 1) { + return proxies + .map((proxy) => ({ + proxy, + delay: delayManager.getDelayFix(proxy.member, groupName), + })) + .sort((a, b) => compareByDelay(a.delay, b.delay, effectiveTimeout)) + .map(({ proxy }) => proxy) + } + const list = proxies.slice() + if (sortType !== 1) { list.sort((a, b) => a.member.ref.name.localeCompare(b.member.ref.name)) }