diff contrib/perf.py @ 18080:486bfb200b3f

perf: add command to test performance of membership in ancestor set The new command, perfancestorset, takes an argument denoting which revset to test the membership of. Currently this runs through all the ancestors and converts them into a set. The primary purpose of having this is to compare this approach, currently used in several places, against the upcoming lazy approach.
author Siddharth Agarwal <sid0@fb.com>
date Fri, 14 Dec 2012 10:23:18 -0800
parents 1471f5e83686
children f7f8159caad3
line wrap: on
line diff
--- a/contrib/perf.py	Tue Dec 11 14:47:33 2012 -0800
+++ b/contrib/perf.py	Fri Dec 14 10:23:18 2012 -0800
@@ -78,6 +78,15 @@
             pass
     timer(d)
 
+def perfancestorset(ui, repo, revset):
+    revs = repo.revs(revset)
+    heads = repo.changelog.headrevs()
+    def d():
+        s = set(repo.changelog.ancestors(heads))
+        for rev in revs:
+            rev in s
+    timer(d)
+
 def perfdirstate(ui, repo):
     "a" in repo.dirstate
     def d():
@@ -253,6 +262,7 @@
     'perfheads': (perfheads, []),
     'perftags': (perftags, []),
     'perfancestors': (perfancestors, []),
+    'perfancestorset': (perfancestorset, [], "REVSET"),
     'perfdirstate': (perfdirstate, []),
     'perfdirstatedirs': (perfdirstate, []),
     'perfdirstatewrite': (perfdirstatewrite, []),