[PATCH 3 of 4] perf: cache revlog file handle during perfrevlog

Gregory Szorc gregory.szorc at gmail.com
Sun Oct 16 16:35:36 EDT 2016


# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1476649617 25200
#      Sun Oct 16 13:26:57 2016 -0700
# Node ID 9e2f957b05ac5c76595280a6084ba01d7b369a05
# Parent  ee7144d686de700d60cb2a78adac3aab43f2a71d
perf: cache revlog file handle during perfrevlog

The aim of perfrevlog is to measure how fast revlog revisions
can be resolved, not I/O. Since we now have a mechanism to cache
an open file handle on a revlog instance, let's use it.

diff --git a/contrib/perf.py b/contrib/perf.py
--- a/contrib/perf.py
+++ b/contrib/perf.py
@@ -788,18 +788,19 @@ def perfrevlog(ui, repo, file_=None, sta
         startrev = 0
         endrev = _len(r)
         dist = opts['dist']
 
         if reverse:
             startrev, endrev = endrev, startrev
             dist = -1 * dist
 
-        for x in xrange(startrev, endrev, dist):
-            r.revision(r.node(x))
+        with r.cachefilehandle():
+            for x in xrange(startrev, endrev, dist):
+                r.revision(r.node(x))
 
     timer(d)
     fm.end()
 
 @command('perfrevlogrevision', revlogopts + formatteropts +
          [('', 'cache', False, 'use caches instead of clearing')],
          '-c|-m|FILE REV')
 def perfrevlogrevision(ui, repo, file_, rev=None, cache=None, **opts):


More information about the Mercurial-devel mailing list