From bc32b4d016b06ad5321d715de3791be53b1131d0 Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Sat, 21 Dec 2024 14:44:18 +0100 Subject: [PATCH] zeta: Compute diff on background thread (#22328) @iamnbutler noticed slowness in assistant panel which I've pinned down to the fact that we're calculating buffer diff on foreground thread. This PR moves this computation into the background; I don't know much about Zeta but it seems fine to do, as the call-site is asynchronous anyways. Closes #ISSUE Release Notes: - N/A --- crates/zeta/src/zeta.rs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/crates/zeta/src/zeta.rs b/crates/zeta/src/zeta.rs index 78faf4883b..d227c0bcab 100644 --- a/crates/zeta/src/zeta.rs +++ b/crates/zeta/src/zeta.rs @@ -298,14 +298,21 @@ impl Zeta { cx.spawn(|this, mut cx| async move { let request_sent_at = Instant::now(); - let mut input_events = String::new(); - for event in events { - if !input_events.is_empty() { - input_events.push('\n'); - input_events.push('\n'); - } - input_events.push_str(&event.to_prompt()); - } + let input_events = cx + .background_executor() + .spawn(async move { + let mut input_events = String::new(); + for event in events { + if !input_events.is_empty() { + input_events.push('\n'); + input_events.push('\n'); + } + input_events.push_str(&event.to_prompt()); + } + input_events + }) + .await; + let input_excerpt = prompt_for_excerpt(&snapshot, &excerpt_range, offset); let input_outline = prompt_for_outline(&snapshot);