[PATCH 3 of 4 V2] perf: add a `clear-revlogs` flag to `perfbookmarks`
Yuya Nishihara
yuya at tcha.org
Sat Nov 24 22:22:49 EST 2018
On Fri, 23 Nov 2018 18:25:49 +0100, Boris Feld wrote:
> # HG changeset patch
> # User Boris Feld <boris.feld at octobus.net>
> # Date 1542711320 0
> # Tue Nov 20 10:55:20 2018 +0000
> # Node ID 438718ecc3058c55b0d5a4a9742b3325b83e78cc
> # Parent 832048aabff97aa43cd306cd70cea00227f5e19e
> # EXP-Topic perf-tags
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> # hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 438718ecc305
> 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
>
> diff --git a/contrib/perf.py b/contrib/perf.py
> --- a/contrib/perf.py
> +++ b/contrib/perf.py
> @@ -577,13 +577,20 @@ def perfancestorset(ui, repo, revset, **
> timer(d)
> fm.end()
>
> - at command(b'perfbookmarks', formatteropts)
> + at command(b'perfbookmarks', formatteropts +
> + [
> + (b'', b'clear-revlogs', False, 'refresh changelog and manifest'),
> + ])
> def perfbookmarks(ui, repo, **opts):
> """benchmark parsing bookmarks from disk to memory"""
> opts = _byteskwargs(opts)
> timer, fm = gettimer(ui, opts)
>
> + svfs = getsvfs(repo)
> + clearrevlogs = opts['clear_revlogs']
> def s():
> + if clearrevlogs:
> + repo.changelog = mercurial.changelog.changelog(svfs)
Same here. We might want a helper function that discards revlog cache.
More information about the Mercurial-devel
mailing list