Mercurial > hg
changeset 36174:b42c47b8c9d4
treemanifest: add an optimized __nonzero__()
We use bool(manifest) in at least some places:
localrepo.py:1730
hgweb/webcommands.py:524
Since the treemanifest class doesn't define __nonzero__() (before this
patch), bool(manifest) will instead call __len__(), which can be slow
for treemanifests. This patch may make a noticeable difference in the
localrepo case above, but that only happens when committing a merge
and I haven't timed it.
Note that Durham already added a __nonzero__ implementation to
manifestdict in b19291e5d506 (manifest: add __nonzero__ method,
2016-11-03).
Differential Revision: https://phab.mercurial-scm.org/D2232
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 13 Feb 2018 13:23:18 -0800 |
parents | 8173eeb69fb3 |
children | 59affe7e01d4 |
files | mercurial/manifest.py |
diffstat | 1 files changed, 6 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/manifest.py Tue Feb 13 18:49:06 2018 -0500 +++ b/mercurial/manifest.py Tue Feb 13 13:23:18 2018 -0800 @@ -755,6 +755,12 @@ size += m.__len__() return size + def __nonzero__(self): + # Faster than "__len() != 0" since it avoids loading sub-manifests + return not self._isempty() + + __bool__ = __nonzero__ + def _isempty(self): self._load() # for consistency; already loaded by all callers return (not self._files and (not self._dirs or