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.
--- 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, []),