changeset 40778:594e84a2e574

perf: add a `clear-revlogs` flag to `perftags` This flag (on by default) makes it possible to disable the refresh of the changelog and revlog. This is useful to check for the time spent in the core tags logic without the associated side effects. Usually, these side effects are shared with other logics (eg: bookmarks). Example output in my Mercurial repository $ hg perftags ! wall 0.017919 comb 0.020000 user 0.020000 sys 0.000000 (best of 141) $ hg perftags --no-clear-revlogs ! wall 0.012982 comb 0.010000 user 0.010000 sys 0.000000 (best of 207)
author Boris Feld <boris.feld@octobus.net>
date Tue, 20 Nov 2018 10:46:20 +0000
parents 415735bfcf2b
children 300f8564220f
files contrib/perf.py
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/perf.py	Sun Nov 25 13:37:53 2018 +0100
+++ b/contrib/perf.py	Tue Nov 20 10:46:20 2018 +0000
@@ -538,14 +538,19 @@
     timer(d)
     fm.end()
 
-@command(b'perftags', formatteropts)
+@command(b'perftags', formatteropts+
+        [
+            (b'', b'clear-revlogs', True, b'refresh changelog and manifest'),
+        ])
 def perftags(ui, repo, **opts):
     opts = _byteskwargs(opts)
     timer, fm = gettimer(ui, opts)
     repocleartagscache = repocleartagscachefunc(repo)
+    clearrevlogs = opts[b'clear_revlogs']
     def s():
-        clearchangelog(repo)
-        clearfilecache(repo.unfiltered(), 'manifest')
+        if clearrevlogs:
+            clearchangelog(repo)
+            clearfilecache(repo.unfiltered(), 'manifest')
         repocleartagscache()
     def t():
         return len(repo.tags())