Pre-initialize global rayon threadpool (#41226)
We only use it a handful of times and the default amount of threads (logical cpu core number) its spawns is overkill for this. This also gives the threads names oppose to being labeled `<unknown>` Release Notes: - N/A *or* Added/Fixed/Improved ...
This commit is contained in:
Generated
+2
@@ -3073,6 +3073,7 @@ dependencies = [
|
|||||||
"parking_lot",
|
"parking_lot",
|
||||||
"paths",
|
"paths",
|
||||||
"plist",
|
"plist",
|
||||||
|
"rayon",
|
||||||
"release_channel",
|
"release_channel",
|
||||||
"serde",
|
"serde",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
@@ -13890,6 +13891,7 @@ dependencies = [
|
|||||||
"pretty_assertions",
|
"pretty_assertions",
|
||||||
"project",
|
"project",
|
||||||
"proto",
|
"proto",
|
||||||
|
"rayon",
|
||||||
"release_channel",
|
"release_channel",
|
||||||
"remote",
|
"remote",
|
||||||
"reqwest_client",
|
"reqwest_client",
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ release_channel.workspace = true
|
|||||||
serde.workspace = true
|
serde.workspace = true
|
||||||
util.workspace = true
|
util.workspace = true
|
||||||
tempfile.workspace = true
|
tempfile.workspace = true
|
||||||
|
rayon.workspace = true
|
||||||
|
|
||||||
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies]
|
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies]
|
||||||
exec.workspace = true
|
exec.workspace = true
|
||||||
|
|||||||
@@ -356,6 +356,12 @@ fn main() -> Result<()> {
|
|||||||
"Dev servers were removed in v0.157.x please upgrade to SSH remoting: https://zed.dev/docs/remote-development"
|
"Dev servers were removed in v0.157.x please upgrade to SSH remoting: https://zed.dev/docs/remote-development"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
rayon::ThreadPoolBuilder::new()
|
||||||
|
.num_threads(4)
|
||||||
|
.thread_name(|ix| format!("RayonWorker{}", ix))
|
||||||
|
.build_global()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
let sender: JoinHandle<anyhow::Result<()>> = thread::Builder::new()
|
let sender: JoinHandle<anyhow::Result<()>> = thread::Builder::new()
|
||||||
.name("CliReceiver".to_string())
|
.name("CliReceiver".to_string())
|
||||||
.spawn({
|
.spawn({
|
||||||
|
|||||||
@@ -751,6 +751,7 @@ pub struct DisplaySnapshot {
|
|||||||
diagnostics_max_severity: DiagnosticSeverity,
|
diagnostics_max_severity: DiagnosticSeverity,
|
||||||
pub(crate) fold_placeholder: FoldPlaceholder,
|
pub(crate) fold_placeholder: FoldPlaceholder,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DisplaySnapshot {
|
impl DisplaySnapshot {
|
||||||
pub fn wrap_snapshot(&self) -> &WrapSnapshot {
|
pub fn wrap_snapshot(&self) -> &WrapSnapshot {
|
||||||
&self.block_snapshot.wrap_snapshot
|
&self.block_snapshot.wrap_snapshot
|
||||||
@@ -1408,6 +1409,14 @@ impl DisplaySnapshot {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl std::ops::Deref for DisplaySnapshot {
|
||||||
|
type Target = BlockSnapshot;
|
||||||
|
|
||||||
|
fn deref(&self) -> &Self::Target {
|
||||||
|
&self.block_snapshot
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Default, Eq, Ord, PartialOrd, PartialEq)]
|
#[derive(Copy, Clone, Default, Eq, Ord, PartialOrd, PartialEq)]
|
||||||
pub struct DisplayPoint(BlockPoint);
|
pub struct DisplayPoint(BlockPoint);
|
||||||
|
|
||||||
|
|||||||
@@ -7945,7 +7945,7 @@ impl Editor {
|
|||||||
|
|
||||||
let snapshot = self.snapshot(window, cx);
|
let snapshot = self.snapshot(window, cx);
|
||||||
|
|
||||||
let multi_buffer_snapshot = snapshot.display_snapshot.buffer_snapshot();
|
let multi_buffer_snapshot = snapshot.buffer_snapshot();
|
||||||
let Some(project) = self.project() else {
|
let Some(project) = self.project() else {
|
||||||
return breakpoint_display_points;
|
return breakpoint_display_points;
|
||||||
};
|
};
|
||||||
@@ -7975,7 +7975,7 @@ impl Editor {
|
|||||||
let multi_buffer_anchor =
|
let multi_buffer_anchor =
|
||||||
Anchor::in_buffer(excerpt_id, buffer_snapshot.remote_id(), breakpoint.position);
|
Anchor::in_buffer(excerpt_id, buffer_snapshot.remote_id(), breakpoint.position);
|
||||||
let position = multi_buffer_anchor
|
let position = multi_buffer_anchor
|
||||||
.to_point(multi_buffer_snapshot)
|
.to_point(&multi_buffer_snapshot)
|
||||||
.to_display_point(&snapshot);
|
.to_display_point(&snapshot);
|
||||||
|
|
||||||
breakpoint_display_points.insert(
|
breakpoint_display_points.insert(
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ util.workspace = true
|
|||||||
watch.workspace = true
|
watch.workspace = true
|
||||||
worktree.workspace = true
|
worktree.workspace = true
|
||||||
thiserror.workspace = true
|
thiserror.workspace = true
|
||||||
|
rayon.workspace = true
|
||||||
|
|
||||||
[target.'cfg(not(windows))'.dependencies]
|
[target.'cfg(not(windows))'.dependencies]
|
||||||
crashes.workspace = true
|
crashes.workspace = true
|
||||||
|
|||||||
@@ -370,6 +370,12 @@ pub fn execute_run(
|
|||||||
|
|
||||||
let listeners = ServerListeners::new(stdin_socket, stdout_socket, stderr_socket)?;
|
let listeners = ServerListeners::new(stdin_socket, stdout_socket, stderr_socket)?;
|
||||||
|
|
||||||
|
rayon::ThreadPoolBuilder::new()
|
||||||
|
.num_threads(4)
|
||||||
|
.thread_name(|ix| format!("RayonWorker{}", ix))
|
||||||
|
.build_global()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
let (shell_env_loaded_tx, shell_env_loaded_rx) = oneshot::channel();
|
let (shell_env_loaded_tx, shell_env_loaded_rx) = oneshot::channel();
|
||||||
app.background_executor()
|
app.background_executor()
|
||||||
.spawn(async {
|
.spawn(async {
|
||||||
|
|||||||
@@ -2291,7 +2291,13 @@ impl BufferSnapshot {
|
|||||||
insertion_cursor.prev();
|
insertion_cursor.prev();
|
||||||
}
|
}
|
||||||
let insertion = insertion_cursor.item().expect("invalid insertion");
|
let insertion = insertion_cursor.item().expect("invalid insertion");
|
||||||
assert_eq!(insertion.timestamp, anchor.timestamp, "invalid insertion");
|
assert_eq!(
|
||||||
|
insertion.timestamp,
|
||||||
|
anchor.timestamp,
|
||||||
|
"invalid insertion for buffer {} with anchor {:?}",
|
||||||
|
self.remote_id(),
|
||||||
|
anchor
|
||||||
|
);
|
||||||
|
|
||||||
fragment_cursor.seek_forward(&Some(&insertion.fragment_id), Bias::Left);
|
fragment_cursor.seek_forward(&Some(&insertion.fragment_id), Bias::Left);
|
||||||
let fragment = fragment_cursor.item().unwrap();
|
let fragment = fragment_cursor.item().unwrap();
|
||||||
|
|||||||
Reference in New Issue
Block a user