Mercurial > hg
changeset 30267:d92777f98524
changegroup: cache changelog and manifestlog outside of loop
History has taught us that repo.changelog can add significant overhead
to loops. So cache the changelog instance outside of the loop to
avoid the lookup. While we're here, do the same for manifestlog,
since each loop would otherwise initialize a new manifestlog instance.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 01 Nov 2016 18:28:03 -0700 |
parents | 730c7fc8889a |
children | dc7c4dbc1af9 |
files | mercurial/changegroup.py |
diffstat | 1 files changed, 4 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/changegroup.py Tue Nov 01 18:49:23 2016 -0700 +++ b/mercurial/changegroup.py Tue Nov 01 18:28:03 2016 -0700 @@ -330,11 +330,12 @@ needfiles = {} if repo.ui.configbool('server', 'validate', default=False): + cl = repo.changelog + ml = repo.manifestlog # validate incoming csets have their manifests for cset in xrange(clstart, clend): - mfnode = repo.changelog.read( - repo.changelog.node(cset))[0] - mfest = repo.manifestlog[mfnode].readdelta() + mfnode = cl.read(cl.node(cset))[0] + mfest = ml[mfnode].readdelta() # store file nodes we must see for f, n in mfest.iteritems(): needfiles.setdefault(f, set()).add(n)