diff -r 1a420761fcb7 -r e8d37b78acfb contrib/perf.py --- a/contrib/perf.py Thu Apr 12 20:22:18 2012 -0500 +++ b/contrib/perf.py Thu Apr 12 14:05:59 2012 -0700 @@ -1,7 +1,7 @@ # perf.py - performance test routines '''helper extension to measure performance''' -from mercurial import cmdutil, scmutil, match, commands +from mercurial import cmdutil, scmutil, util, match, commands import time, os, sys def timer(func, title=None): @@ -120,6 +120,27 @@ cl.rev(n) timer(d) +def perfnodelookup(ui, repo, rev): + import mercurial.revlog + mercurial.revlog._prereadsize = 2**24 # disable lazy parser in old hg + n = repo[rev].node() + cl = mercurial.revlog.revlog(repo.sopener, "00changelog.i") + # behave somewhat consistently across internal API changes + if util.safehasattr(cl, 'clearcaches'): + clearcaches = cl.clearcaches + elif util.safehasattr(cl, '_nodecache'): + from mercurial.node import nullid, nullrev + def clearcaches(): + cl._nodecache = {nullid: nullrev} + cl._nodepos = None + else: + def clearcaches(): + pass + def d(): + cl.rev(n) + clearcaches() + timer(d) + def perflog(ui, repo, **opts): ui.pushbuffer() timer(lambda: commands.log(ui, repo, rev=[], date='', user='',