From patchwork Mon Mar 25 00:27:45 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1,of,9] perf: add a command to measure merge.calculateupdates perf From: Siddharth Agarwal X-Patchwork-Id: 1177 Message-Id: <72770effd8ccb4b33430.1364171265@sid0x220> To: mercurial-devel@selenic.com Date: Sun, 24 Mar 2013 17:27:45 -0700 # HG changeset patch # User Siddharth Agarwal # Date 1364169970 25200 # Sun Mar 24 17:06:10 2013 -0700 # Node ID 72770effd8ccb4b33430410f5b0bd33964795af5 # Parent 009929458ae8a97e342fe7fbbdbada8798870aa1 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 --git a/contrib/perf.py b/contrib/perf.py --- a/contrib/perf.py +++ b/contrib/perf.py @@ -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 @@ def perfdirstatewrite(ui, repo): 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():