perf: time loading branchmap caches
Differential Revision: https://phab.mercurial-scm.org/D4280
--- a/contrib/perf.py Thu Aug 16 00:13:41 2018 +0000
+++ b/contrib/perf.py Mon Aug 13 20:31:01 2018 +0100
@@ -1751,6 +1751,31 @@
branchcachewrite.restore()
fm.end()
+@command('perfbranchmapload', [
+ ('f', 'filter', '', 'Specify repoview filter'),
+ ('', 'list', False, 'List brachmap filter caches'),
+ ] + formatteropts)
+def perfbranchmapread(ui, repo, filter='', list=False, **opts):
+ """benchmark reading the branchmap"""
+ if list:
+ for name, kind, st in repo.cachevfs.readdir(stat=True):
+ if name.startswith('branch2'):
+ filtername = name.partition('-')[2] or 'unfiltered'
+ ui.status('%s - %s\n'
+ % (filtername, util.bytecount(st.st_size)))
+ return
+ if filter:
+ repo = repoview.repoview(repo, filter)
+ else:
+ repo = repo.unfiltered()
+ # try once without timer, the filter may not be cached
+ if branchmap.read(repo) is None:
+ raise error.Abort('No brachmap cached for %s repo'
+ % (filter or 'unfiltered'))
+ timer, fm = gettimer(ui, opts)
+ timer(lambda: branchmap.read(repo) and None)
+ fm.end()
+
@command('perfloadmarkers')
def perfloadmarkers(ui, repo):
"""benchmark the time to parse the on-disk markers for a repo
--- a/tests/test-contrib-perf.t Thu Aug 16 00:13:41 2018 +0000
+++ b/tests/test-contrib-perf.t Mon Aug 13 20:31:01 2018 +0100
@@ -55,6 +55,8 @@
benchmark parsing bookmarks from disk to memory
perfbranchmap
benchmark the update of a branchmap
+ perfbranchmapload
+ benchmark reading the branchmap
perfbundleread
Benchmark reading of bundle files.
perfcca (no help text available)