From b0ab206a8b2522123f9ae5294947c76a30587226 Mon Sep 17 00:00:00 2001 From: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:05:39 +0800 Subject: [PATCH] perf(spend): parallelize provider baselines in makeRequest Refresh independent spend snapshots concurrently via TaskGroup instead of sequential await, cutting 400ms-6s additive latency when multiple providers (Claude/Cursor/OpenCodex) share the 365-day window. --- Sources/CodexBar/SpendDashboardController.swift | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Sources/CodexBar/SpendDashboardController.swift b/Sources/CodexBar/SpendDashboardController.swift index c6f454e665..a06e8e24ba 100644 --- a/Sources/CodexBar/SpendDashboardController.swift +++ b/Sources/CodexBar/SpendDashboardController.swift @@ -234,11 +234,18 @@ enum SpendDashboardSource { publication: captured.publication, publicationRevision: captured.revision) } - for baseline in providerBaselines where mode.shouldRefresh(hasPublication: baseline.publication != nil) { - if UsageStore.tokenCostRequiresProviderSnapshot(baseline.provider) { - await store.refreshProvider(baseline.provider) - } else { - await store.refreshSpendDashboardTokenUsageNow(for: baseline.provider, force: true) + let baselinesToRefresh = providerBaselines.filter { mode.shouldRefresh(hasPublication: $0.publication != nil) } + if !baselinesToRefresh.isEmpty { + await withTaskGroup(of: Void.self) { group in + for baseline in baselinesToRefresh { + group.addTask { + if UsageStore.tokenCostRequiresProviderSnapshot(baseline.provider) { + await store.refreshProvider(baseline.provider) + } else { + await store.refreshSpendDashboardTokenUsageNow(for: baseline.provider, force: true) + } + } + } } }