rust/hg-core/src/dirstate_tree/status.rs
branchstable
changeset 48973 e2f8ed37201c
parent 48794 834c938227c6
child 49000 dd6b67d5c256
--- a/rust/hg-core/src/dirstate_tree/status.rs	Tue Mar 15 14:45:47 2022 +0100
+++ b/rust/hg-core/src/dirstate_tree/status.rs	Fri Mar 18 16:15:44 2022 +0100
@@ -47,6 +47,17 @@
     ignore_files: Vec<PathBuf>,
     options: StatusOptions,
 ) -> Result<(DirstateStatus<'on_disk>, Vec<PatternFileWarning>), StatusError> {
+    // Force the global rayon threadpool to not exceed 16 concurrent threads.
+    // This is a stop-gap measure until we figure out why using more than 16
+    // threads makes `status` slower for each additional thread.
+    // We use `ok()` in case the global threadpool has already been
+    // instantiated in `rhg` or some other caller.
+    // TODO find the underlying cause and fix it, then remove this.
+    rayon::ThreadPoolBuilder::new()
+        .num_threads(16)
+        .build_global()
+        .ok();
+
     let (ignore_fn, warnings, patterns_changed): (IgnoreFnType, _, _) =
         if options.list_ignored || options.list_unknown {
             let mut hasher = Sha1::new();