[Request] [+ ] D8513: rust-dirstatemap: don't read the dirstate when requesting parents
Alphare (Raphaël Gomès)
phabricator at mercurial-scm.org
Mon May 11 15:06:13 UTC 2020
Alphare created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
`perfdiscovery` gets a *significant* speedup (from 0.101 to 0.016) when applied
against a future patch for issue6303. I'm assuming it has other performance
benefits, but this is already a good enough win.
REPOSITORY
rHG Mercurial
BRANCH
stable
REVISION DETAIL
https://phab.mercurial-scm.org/D8513
AFFECTED FILES
mercurial/dirstate.py
CHANGE DETAILS
diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py
--- a/mercurial/dirstate.py
+++ b/mercurial/dirstate.py
@@ -1743,10 +1743,23 @@
@propertycache
def _rustmap(self):
- self._rustmap = rustmod.DirstateMap(self._root)
+ """
+ Fills the Dirstatemap when called.
+ Use `self._inner_rustmap` if reading the dirstate is not necessary.
+ """
+ self._rustmap = self._inner_rustmap
self.read()
return self._rustmap
+ @propertycache
+ def _inner_rustmap(self):
+ """
+ Does not fill the Dirstatemap when called. This allows for
+ optimizations where only setting/getting the parents is needed.
+ """
+ self._inner_rustmap = rustmod.DirstateMap(self._root)
+ return self._inner_rustmap
+
@property
def copymap(self):
return self._rustmap.copymap()
@@ -1756,6 +1769,7 @@
def clear(self):
self._rustmap.clear()
+ self._inner_rustmap.clear()
self.setparents(nullid, nullid)
util.clearcachedproperty(self, b"_dirs")
util.clearcachedproperty(self, b"_alldirs")
@@ -1812,7 +1826,7 @@
st = b''
try:
- self._parents = self._rustmap.parents(st)
+ self._parents = self._inner_rustmap.parents(st)
except ValueError:
raise error.Abort(
_(b'working directory state appears damaged!')
To: Alphare, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20200511/85d47678/attachment-0001.html>
More information about the Mercurial-patches
mailing list