# HG changeset patch # User Pierre-Yves David # Date 1357323806 -3600 # Node ID a8318715d8bb6c473f0178a942402dbad586b6cb # Parent a95f1d619bb74598a86a988f8f6e5b2f6865f3b0 perftest: add a command to benchmark construction of volatile cache Obsolescence and filtering related caches are critical. Having a handy way to check them is valuable. diff -r a95f1d619bb7 -r a8318715d8bb contrib/perf.py --- a/contrib/perf.py Fri Jan 04 19:22:40 2013 +0100 +++ b/contrib/perf.py Fri Jan 04 19:23:26 2013 +0100 @@ -1,7 +1,8 @@ # perf.py - performance test routines '''helper extension to measure performance''' -from mercurial import cmdutil, scmutil, util, match, commands +from mercurial import cmdutil, scmutil, util, match, commands, obsolete +from mercurial import repoview import time, os, sys cmdtable = {} @@ -275,3 +276,28 @@ repo.invalidatevolatilesets() repo.revs(expr) timer(d) + +@command('perfvolatilesets') +def perfvolatilesets(ui, repo): + """benchmark the computation of various volatile set + + Volatile set computes element related to filtering and obsolescence.""" + repo = repo.unfiltered() + + def getobs(name): + def d(): + repo.invalidatevolatilesets() + obsolete.getrevs(repo, name) + return d + + for name in sorted(obsolete.cachefuncs): + timer(getobs(name), title=name) + + def getfiltered(name): + def d(): + repo.invalidatevolatilesets() + repoview.filteredrevs(repo, name) + return d + + for name in sorted(repoview.filtertable): + timer(getfiltered(name), title=name)