# HG changeset patch # User Siddharth Agarwal # Date 1364169970 25200 # Node ID c760acc6f69d524b87ffc0b5576323b8b09eeb1f # Parent 7f7d5f8a8f15a23e813963813cc445ed97f0a72d perf: add a command to measure merge.calculateupdates perf The performance of merge.manifestmerge will be improved in upcoming patches. This command will be used to demonstrate the improvement. diff -r 7f7d5f8a8f15 -r c760acc6f69d contrib/perf.py --- a/contrib/perf.py Mon Mar 25 16:57:36 2013 -0700 +++ b/contrib/perf.py Sun Mar 24 17:06:10 2013 -0700 @@ -2,7 +2,7 @@ '''helper extension to measure performance''' from mercurial import cmdutil, scmutil, util, match, commands, obsolete -from mercurial import repoview, branchmap +from mercurial import repoview, branchmap, merge import time, os, sys cmdtable = {} @@ -124,6 +124,22 @@ ds.write() timer(d) +@command('perfmergecalculate', + [('r', 'rev', '.', 'rev to merge against')]) +def perfmergecalculate(ui, repo, rev): + wctx = repo[None] + rctx = scmutil.revsingle(repo, rev, rev) + ancestor = wctx.ancestor(rctx) + # we don't want working dir files to be stat'd in the benchmark, so prime + # that cache + wctx.dirty() + def d(): + # acceptremote is True because we don't want prompts in the middle of + # our benchmark + merge.calculateupdates(repo, wctx, rctx, ancestor, False, False, False, + acceptremote=True) + timer(d) + @command('perfmanifest') def perfmanifest(ui, repo): def d():