summaryrefslogtreecommitdiff
path: root/contrib/perf.py
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/perf.py')
-rw-r--r--contrib/perf.py100
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, []),