[PATCH 2 of 2 V2] perf: add a --[no-]clear-caches option to `perfnodemap`
Augie Fackler
raf at durin42.com
Wed Jan 30 16:26:35 EST 2019
queued, thanks
> On Jan 29, 2019, at 10:47, Boris Feld <boris.feld at octobus.net> wrote:
>
> # HG changeset patch
> # User Boris Feld <boris.feld at octobus.net>
> # Date 1548664893 18000
> # Mon Jan 28 03:41:33 2019 -0500
> # Node ID 4ecd8c3fa0df874dcae358025c160b0bbbaf57d1
> # Parent 3414a69b2e99e8fa605f63f9973894c80dd144b3
> # EXP-Topic perf-ext
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> # hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 4ecd8c3fa0df
> perf: add a --[no-]clear-caches option to `perfnodemap`
>
> The option is useful to look at pure lookup performance on a warm data
> structure.
>
> diff --git a/contrib/perf.py b/contrib/perf.py
> --- a/contrib/perf.py
> +++ b/contrib/perf.py
> @@ -1068,7 +1068,8 @@ def perfindex(ui, repo, **opts):
> fm.end()
>
> @command(b'perfnodemap', [
> - (b'', b'rev', [], b'revision to be looked up (default tip)'),
> + (b'', b'rev', [], b'revision to be looked up (default tip)'),
> + (b'', b'clear-caches', True, b'clear revlog cache between calls'),
> ] + formatteropts)
> def perfnodemap(ui, repo, **opts):
> """benchmark the time necessary to look up revision from a cold nodemap
> @@ -1093,6 +1094,7 @@ def perfnodemap(ui, repo, **opts):
> mercurial.revlog._prereadsize = 2**24 # disable lazy parser in old hg
>
> unfi = repo.unfiltered()
> + clearcaches = opts['clear_caches']
> # find the filecache func directly
> # This avoid polluting the benchmark with the filecache logic
> makecl = unfi.__class__.changelog.func
> @@ -1109,13 +1111,18 @@ def perfnodemap(ui, repo, **opts):
> clearchangelog(unfi)
> nodeget[0] = makecl(unfi).nodemap.get
>
> - def setup():
> - setnodeget()
> def d():
> get = nodeget[0]
> for n in nodes:
> get(n)
>
> + setup = None
> + if clearcaches:
> + def setup():
> + setnodeget()
> + else:
> + setnodeget()
> + d() # prewarm the data structure
> timer(d, setup=setup)
> fm.end()
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list