[PATCH 6 of 6] perftest: allow selection of volatile set to benchmark

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Fri Jan 4 12:28:53 CST 2013


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1357323872 -3600
# Node ID 8d495cfd20eaf9983c5e5be2936dadc3472506fa
# Parent  c5a98600c967a317ea290a7a78ce9cfce614842b
perftest: allow selection of volatile set to benchmark

This helps when you focus on a subset of the volatile chain.

diff --git a/contrib/perf.py b/contrib/perf.py
--- a/contrib/perf.py
+++ b/contrib/perf.py
@@ -276,11 +276,11 @@ def perfrevset(ui, repo, expr, clear=Fal
             repo.invalidatevolatilesets()
         repo.revs(expr)
     timer(d)
 
 @command('perfvolatilesets')
-def perfvolatilesets(ui, repo):
+def perfvolatilesets(ui, repo, *names):
     """benchmark the computation of various volatile set
 
     Volatile set computes element related to filtering and obsolescence."""
     repo = repo.unfiltered()
 
@@ -288,16 +288,24 @@ def perfvolatilesets(ui, repo):
         def d():
             repo.invalidatevolatilesets()
             obsolete.getrevs(repo, name)
         return d
 
-    for name in sorted(obsolete.cachefuncs):
+    allobs = sorted(obsolete.cachefuncs)
+    if names:
+        allobs = [n for n in allobs if n in names]
+
+    for name in allobs:
         timer(getobs(name), title=name)
 
     def getfiltered(name):
         def d():
             repo.invalidatevolatilesets()
             repoview.filteredrevs(repo, name)
         return d
 
-    for name in sorted(repoview.filtertable):
+    allfilter = sorted(repoview.filtertable)
+    if names:
+        allfilter = [n for n in allfilter if n in names]
+
+    for name in allfilter:
         timer(getfiltered(name), title=name)


More information about the Mercurial-devel mailing list