# HG changeset patch # User Laurent Charignon # Date 1450472085 28800 # Node ID ff305ab2e0d7291da12a8b640ce8c9bb28e0cb03 # Parent ed003859f1d81d614fba98e5ca08dbcf5b0a7224 log: speed up hg log This patch makes hg log faster by using changelog.readfiles instead of changelog.read. On our large repos for hg log -l5 operations that were taking: - ~8s I see a 25% improvement - ~15s, I see a 35% improvement For recently modified folder/file, the difference is negligible as we don't have to consider many revisions. diff -r ed003859f1d8 -r ff305ab2e0d7 mercurial/revset.py --- a/mercurial/revset.py Fri Dec 18 13:45:55 2015 -0800 +++ b/mercurial/revset.py Fri Dec 18 12:54:45 2015 -0800 @@ -1166,13 +1166,13 @@ # This directly read the changelog data as creating changectx for all # revisions is quite expensive. - getchangeset = repo.changelog.read + getfiles = repo.changelog.readfiles wdirrev = node.wdirrev def matches(x): if x == wdirrev: files = repo[x].files() else: - files = getchangeset(x)[3] + files = getfiles(x) for f in files: if m(f): return True