Patchwork D8250: rust-status: wrap `stat_dmap_entries` to ease profiling

login
register
mail settings
Submitter phabricator
Date March 6, 2020, 5:51 p.m.
Message ID <differential-rev-PHID-DREV-7l5hhxwlgtitr7rdxa35-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/45566/
State Superseded
Headers show

Comments

phabricator - March 6, 2020, 5:51 p.m.
Alphare created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D8250

AFFECTED FILES
  rust/hg-core/src/dirstate/status.rs

CHANGE DETAILS




To: Alphare, #hg-reviewers
Cc: mercurial-devel

Patch

diff --git a/rust/hg-core/src/dirstate/status.rs b/rust/hg-core/src/dirstate/status.rs
--- a/rust/hg-core/src/dirstate/status.rs
+++ b/rust/hg-core/src/dirstate/status.rs
@@ -508,6 +508,21 @@ 
     })
 }
 
+/// This takes a mutable reference to the results to account for the `extend`
+/// in timings
+fn extend_from_dmap<'a>(
+    dmap: &'a DirstateMap,
+    root_dir: impl AsRef<Path> + Sync + Send,
+    options: StatusOptions,
+    results: &mut Vec<(Cow<'a, HgPath>, Dispatch)>,
+) {
+    results.par_extend(
+        stat_dmap_entries(dmap, root_dir, options)
+            .flatten()
+            .map(|(filename, dispatch)| (Cow::Borrowed(filename), dispatch)),
+    );
+}
+
 pub struct DirstateStatus<'a> {
     pub modified: Vec<Cow<'a, HgPath>>,
     pub added: Vec<Cow<'a, HgPath>>,
@@ -766,10 +781,7 @@ 
         } else {
             // We may not have walked the full directory tree above, so stat
             // and check everything we missed.
-            let stat_results = stat_dmap_entries(&dmap, root_dir, options);
-            results.par_extend(stat_results.flatten().map(
-                |(filename, dispatch)| (Cow::Borrowed(filename), dispatch),
-            ));
+            extend_from_dmap(&dmap, root_dir, options, &mut results);
         }
     }