--- a/contrib/perf.py Sun Oct 13 00:15:36 2019 -0400
+++ b/contrib/perf.py Tue Oct 08 04:23:04 2019 -0400
@@ -1101,10 +1101,14 @@
fm.end()
-@command(b'perfdirstate', formatteropts)
+@command(b'perfdirstate', [
+ (b'', b'iteration', None,
+ b'benchmark a full iteration for the dirstate'),
+ ] + formatteropts)
def perfdirstate(ui, repo, **opts):
- """benchmap the time necessary to load a dirstate from scratch
-
+ """benchmap the time of various distate operations
+
+ By default benchmark the time necessary to load a dirstate from scratch.
The dirstate is loaded to the point were a "contains" request can be
answered.
"""
@@ -1112,11 +1116,18 @@
timer, fm = gettimer(ui, opts)
b"a" in repo.dirstate
- def setup():
- repo.dirstate.invalidate()
-
- def d():
- b"a" in repo.dirstate
+ if opts[b'iteration']:
+ setup = None
+ dirstate = repo.dirstate
+ def d():
+ for f in dirstate:
+ pass
+ else:
+ def setup():
+ repo.dirstate.invalidate()
+
+ def d():
+ b"a" in repo.dirstate
timer(d, setup=setup)
fm.end()