diff options
Diffstat (limited to 'contrib/perf.py')
-rw-r--r-- | contrib/perf.py | 100 |
1 files changed, 7 insertions, 93 deletions
diff --git a/contrib/perf.py b/contrib/perf.py index 574e899..3b70601 100644 --- a/contrib/perf.py +++ b/contrib/perf.py @@ -1,7 +1,7 @@ # perf.py - performance test routines '''helper extension to measure performance''' -from mercurial import cmdutil, scmutil, util, match, commands +from mercurial import cmdutil, scmutil, match, commands import time, os, sys def timer(func, title=None): @@ -33,34 +33,20 @@ def perfwalk(ui, repo, *pats): try: m = scmutil.match(repo[None], pats, {}) timer(lambda: len(list(repo.dirstate.walk(m, [], True, False)))) - except Exception: + except: try: m = scmutil.match(repo[None], pats, {}) timer(lambda: len([b for a, b, c in repo.dirstate.statwalk([], m)])) - except Exception: + except: timer(lambda: len(list(cmdutil.walk(repo, pats, {})))) def perfstatus(ui, repo, *pats): #m = match.always(repo.root, repo.getcwd()) - #timer(lambda: sum(map(len, repo.dirstate.status(m, [], False, False, - # False)))) + #timer(lambda: sum(map(len, repo.dirstate.status(m, [], False, False, False)))) timer(lambda: sum(map(len, repo.status()))) -def clearcaches(cl): - # behave somewhat consistently across internal API changes - if util.safehasattr(cl, 'clearcaches'): - cl.clearcaches() - elif util.safehasattr(cl, '_nodecache'): - from mercurial.node import nullid, nullrev - cl._nodecache = {nullid: nullrev} - cl._nodepos = None - def perfheads(ui, repo): - cl = repo.changelog - def d(): - len(cl.headrevs()) - clearcaches(cl) - timer(d) + timer(lambda: len(repo.changelog.heads())) def perftags(ui, repo): import mercurial.changelog, mercurial.manifest @@ -71,13 +57,6 @@ def perftags(ui, repo): return len(repo.tags()) timer(t) -def perfancestors(ui, repo): - heads = repo.changelog.headrevs() - def d(): - for a in repo.changelog.ancestors(heads): - pass - timer(d) - def perfdirstate(ui, repo): "a" in repo.dirstate def d(): @@ -92,14 +71,6 @@ def perfdirstatedirs(ui, repo): del repo.dirstate._dirs timer(d) -def perfdirstatewrite(ui, repo): - ds = repo.dirstate - "a" in ds - def d(): - ds._dirty = True - ds.write() - timer(d) - def perfmanifest(ui, repo): def d(): t = repo.manifest.tip() @@ -108,20 +79,13 @@ def perfmanifest(ui, repo): repo.manifest._cache = None timer(d) -def perfchangeset(ui, repo, rev): - n = repo[rev].node() - def d(): - c = repo.changelog.read(n) - #repo.changelog._cache = None - timer(d) - def perfindex(ui, repo): import mercurial.revlog mercurial.revlog._prereadsize = 2**24 # disable lazy parser in old hg n = repo["tip"].node() def d(): - cl = mercurial.revlog.revlog(repo.sopener, "00changelog.i") - cl.rev(n) + repo.invalidate() + repo[n] timer(d) def perfstartup(ui, repo): @@ -140,29 +104,6 @@ def perfparents(ui, repo): def perflookup(ui, repo, rev): timer(lambda: len(repo.lookup(rev))) -def perfrevrange(ui, repo, *specs): - revrange = scmutil.revrange - timer(lambda: len(revrange(repo, specs))) - -def perfnodelookup(ui, repo, rev): - import mercurial.revlog - mercurial.revlog._prereadsize = 2**24 # disable lazy parser in old hg - n = repo[rev].node() - def d(): - cl = mercurial.revlog.revlog(repo.sopener, "00changelog.i") - 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") - def d(): - cl.rev(n) - clearcaches(cl) - timer(d) - def perflog(ui, repo, **opts): ui.pushbuffer() timer(lambda: commands.log(ui, repo, rev=[], date='', user='', @@ -176,25 +117,6 @@ def perftemplating(ui, repo): ' {author|person}: {desc|firstline}\n')) ui.popbuffer() -def perfcca(ui, repo): - timer(lambda: scmutil.casecollisionauditor(ui, False, repo.dirstate)) - -def perffncacheload(ui, repo): - from mercurial import scmutil, store - s = store.store(set(['store','fncache']), repo.path, scmutil.opener) - def d(): - s.fncache._load() - timer(d) - -def perffncachewrite(ui, repo): - from mercurial import scmutil, store - s = store.store(set(['store','fncache']), repo.path, scmutil.opener) - s.fncache._load() - def d(): - s.fncache._dirty = True - s.fncache.write() - timer(d) - def perfdiffwd(ui, repo): """Profile diff of working directory changes""" options = { @@ -223,25 +145,17 @@ def perfrevlog(ui, repo, file_, **opts): timer(d) cmdtable = { - 'perfcca': (perfcca, []), - 'perffncacheload': (perffncacheload, []), - 'perffncachewrite': (perffncachewrite, []), 'perflookup': (perflookup, []), - 'perfrevrange': (perfrevrange, []), - 'perfnodelookup': (perfnodelookup, []), 'perfparents': (perfparents, []), 'perfstartup': (perfstartup, []), 'perfstatus': (perfstatus, []), 'perfwalk': (perfwalk, []), 'perfmanifest': (perfmanifest, []), - 'perfchangeset': (perfchangeset, []), 'perfindex': (perfindex, []), 'perfheads': (perfheads, []), 'perftags': (perftags, []), - 'perfancestors': (perfancestors, []), 'perfdirstate': (perfdirstate, []), 'perfdirstatedirs': (perfdirstate, []), - 'perfdirstatewrite': (perfdirstatewrite, []), 'perflog': (perflog, [('', 'rename', False, 'ask log to follow renames')]), 'perftemplating': (perftemplating, []), |