Mercurial > hg
changeset 9826:d768614578dd
contrib/perf: profile diff of working directory changes
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Wed, 11 Nov 2009 17:02:00 +0100 |
parents | 0d850f8beea6 |
children | 4fe9ca519637 |
files | contrib/perf.py |
diffstat | 1 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/contrib/perf.py Wed Nov 04 13:44:15 2009 -0600 +++ b/contrib/perf.py Wed Nov 11 17:02:00 2009 +0100 @@ -4,7 +4,7 @@ from mercurial import cmdutil, match, commands import time, os, sys -def timer(func): +def timer(func, title=None): results = [] begin = time.time() count = 0 @@ -21,6 +21,8 @@ break if cstop - begin > 10 and count >= 3: break + if title: + sys.stderr.write("! %s\n" % title) if r: sys.stderr.write("! result: %s\n" % r) m = min(results) @@ -113,6 +115,23 @@ ' {author|person}: {desc|firstline}\n')) ui.popbuffer() +def perfdiffwd(ui, repo): + """Profile diff of working directory changes""" + options = { + 'w': 'ignore_all_space', + 'b': 'ignore_space_change', + 'B': 'ignore_blank_lines', + } + + for diffopt in ('', 'w', 'b', 'B', 'wB'): + opts = dict((options[c], '1') for c in diffopt) + def d(): + ui.pushbuffer() + commands.diff(ui, repo, **opts) + ui.popbuffer() + title = 'diffopts: %s' % (diffopt and ('-' + diffopt) or 'none') + timer(d, title) + cmdtable = { 'perflookup': (perflookup, []), 'perfparents': (perfparents, []), @@ -127,5 +146,6 @@ 'perfdirstatedirs': (perfdirstate, []), 'perflog': (perflog, []), 'perftemplating': (perftemplating, []), + 'perfdiffwd': (perfdiffwd, []), }