[PATCH 1 of 5] context: optimize _parents()
Gregory Szorc
gregory.szorc at gmail.com
Sun Nov 22 04:14:26 UTC 2015
# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1448161452 28800
# Sat Nov 21 19:04:12 2015 -0800
# Node ID a0dca54dfb28f166758d41adc947438850eefa1b
# Parent f8ab893d8dac5246224f330fafdea35c0bcef313
context: optimize _parents()
This patch avoids some extra attribute lookups and list mutations.
This micro-optimization seems to result in a minor speedup for `hg log`
on my Firefox repo:
before: 25.35s
after: 24.91s
delta: -0.44s (98% of original)
Not the biggest gain. But every little bit helps.
diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -506,20 +506,21 @@ class changectx(basectx):
return self._repo.manifest.read(self._changeset[0])
@propertycache
def _manifestdelta(self):
return self._repo.manifest.readdelta(self._changeset[0])
@propertycache
def _parents(self):
- p = self._repo.changelog.parentrevs(self._rev)
- if p[1] == nullrev:
- p = p[:-1]
- return [changectx(self._repo, x) for x in p]
+ repo = self._repo
+ p1, p2 = repo.changelog.parentrevs(self._rev)
+ if p2 == nullrev:
+ return [changectx(repo, p1)]
+ return [changectx(repo, p1), changectx(repo, p2)]
def changeset(self):
return self._changeset
def manifestnode(self):
return self._changeset[0]
def user(self):
return self._changeset[1]
More information about the Mercurial-devel
mailing list