perf: clear revlog caches on every iteration
authorGregory Szorc <gregory.szorc@gmail.com>
Sat, 06 May 2017 11:15:56 -0700
changeset 32271 954f63391d71
parent 32270 73c3e226d2fc
child 32272 4c6b2076d292
perf: clear revlog caches on every iteration cmdutil.openrevlog() may return a cached revlog instance. This /may/ be a recent "regression" due to refactoring of the manifest API. I'm not sure. Either way, this perf command was broken for at least manifests because subsequent invocations of the perf function would get cache hits from previous invocations, invalidating results. In the extreme case, testing the last revision in the revlog resulted in near-instantanous execution of subsequent runs (since the fulltext is cached). A time of ~1us would be reported in this case.
contrib/perf.py
--- a/contrib/perf.py	Sat May 06 11:12:23 2017 -0700
+++ b/contrib/perf.py	Sat May 06 11:15:56 2017 -0700
@@ -854,6 +854,7 @@
 
     def d():
         r = cmdutil.openrevlog(repo, 'perfrevlog', file_, opts)
+        r.clearcaches()
 
         beginrev = startrev
         endrev = _len(r)