Mercurial > hg
changeset 31756:9ec03d5af48f
revlog: add a fast path for revision(raw=False)
If cache hit and flags are empty, no flag processor runs and "text" equals
to "rawtext". So we check flags, and return rawtext.
This resolves performance issue introduced by a previous patch.
author | Jun Wu <quark@fb.com> |
---|---|
date | Thu, 30 Mar 2017 21:21:15 -0700 |
parents | ec48d57de110 |
children | 473f2fcc7629 |
files | mercurial/revlog.py |
diffstat | 1 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/revlog.py Thu Mar 30 18:38:03 2017 -0700 +++ b/mercurial/revlog.py Thu Mar 30 21:21:15 2017 -0700 @@ -1274,6 +1274,13 @@ # _cache only stores rawtext if raw: return self._cache[2] + # duplicated, but good for perf + if rev is None: + rev = self.rev(node) + # no extra flags set, no flag processor runs, text = rawtext + if self.flags(rev) == REVIDX_DEFAULT_FLAGS: + return self._cache[2] + cachedrev = self._cache[1] # look up what we need to read