diff contrib/perf.py @ 39114:222aba766015

perf: time loading branchmap caches Differential Revision: https://phab.mercurial-scm.org/D4280
author Martijn Pieters <mj@octobus.net>
date Mon, 13 Aug 2018 20:31:01 +0100
parents a1f694779b2f
children b95b48a55c36
line wrap: on
line diff
--- 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