perf: add a `clear-revlogs` flag to `perfbookmarks`
This flag (off by default) makes it possible to enable the refresh of the
changelog and revlog. This is useful to check for costly side effects of
bookmark loading.
Usually, these side effects are shared with other logics (eg: tags).
example output in my mercurial repo (with 1 bookmark, so not a great example):
$ hg perfbookmarks
! wall 0.000044
$ hg perfbookmarks --clear-revlogs
! wall 0.001380
--- a/contrib/perf.py Tue Nov 20 10:38:15 2018 +0000
+++ b/contrib/perf.py Tue Nov 20 10:55:20 2018 +0000
@@ -581,13 +581,19 @@
timer(d)
fm.end()
-@command(b'perfbookmarks', formatteropts)
+@command(b'perfbookmarks', formatteropts +
+ [
+ (b'', b'clear-revlogs', False, b'refresh changelog and manifest'),
+ ])
def perfbookmarks(ui, repo, **opts):
"""benchmark parsing bookmarks from disk to memory"""
opts = _byteskwargs(opts)
timer, fm = gettimer(ui, opts)
+ clearrevlogs = opts[b'clear_revlogs']
def s():
+ if clearrevlogs:
+ clearchangelog(repo)
clearfilecache(repo, b'_bookmarks')
def d():
repo._bookmarks