Mercurial > hg
changeset 29056:e2178f7d17c0
manifest: improve filesnotin performance by using lazymanifest diff
lazymanifests can compute diffs significantly faster than taking the set
of two manifests and calculating the delta.
when running hg diff --git -c . on Facebook's big repo, this reduces the
run time from 2.1s to 1.5s.
author | Tony Tung <tonytung@merly.org> |
---|---|
date | Mon, 02 May 2016 15:22:16 -0700 |
parents | 4a65c9c6cd3f |
children | add26c663aad |
files | mercurial/manifest.py |
diffstat | 1 files changed, 4 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/manifest.py Tue Apr 19 11:00:15 2016 +0100 +++ b/mercurial/manifest.py Mon May 02 15:22:16 2016 -0700 @@ -211,8 +211,10 @@ def filesnotin(self, m2): '''Set of files in this manifest that are not in the other''' - files = set(self) - files.difference_update(m2) + diff = self.diff(m2) + files = set(filepath + for filepath, hashflags in diff.iteritems() + if hashflags[1][0] is None) return files @propertycache