comparison contrib/revsetbenchmarks.py @ 21549:ea3d75ebea6d

revsetbenchmark: support for running on other repo We add a -R/--repo option to run the benchmarks on another repository. This is very useful as some repository are bigger/more interesting than the mercurial one.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Tue, 29 Apr 2014 14:12:32 -0700
parents 651d7548a744
children d5cef58d8ec8
comparison
equal deleted inserted replaced
21548:651d7548a744 21549:ea3d75ebea6d
36 check_call(['hg', 'update', '--quiet', '--check', str(rev)]) 36 check_call(['hg', 'update', '--quiet', '--check', str(rev)])
37 except CalledProcessError, exc: 37 except CalledProcessError, exc:
38 print >> sys.stderr, 'update to revision %s failed, aborting' % rev 38 print >> sys.stderr, 'update to revision %s failed, aborting' % rev
39 sys.exit(exc.returncode) 39 sys.exit(exc.returncode)
40 40
41 def perf(revset): 41 def perf(revset, target=None):
42 """run benchmark for this very revset""" 42 """run benchmark for this very revset"""
43 try: 43 try:
44 output = check_output(['./hg', 44 cmd = ['./hg',
45 '--config', 45 '--config',
46 'extensions.perf=' 46 'extensions.perf='
47 + os.path.join(contribdir, 'perf.py'), 47 + os.path.join(contribdir, 'perf.py'),
48 'perfrevset', 48 'perfrevset',
49 revset], 49 revset]
50 stderr=STDOUT) 50 if target is not None:
51 cmd.append('-R')
52 cmd.append(target)
53 output = check_output(cmd, stderr=STDOUT)
51 output = output.lstrip('!') # remove useless ! in this context 54 output = output.lstrip('!') # remove useless ! in this context
52 return output.strip() 55 return output.strip()
53 except CalledProcessError, exc: 56 except CalledProcessError, exc:
54 print >> sys.stderr, 'abort: cannot run revset benchmark' 57 print >> sys.stderr, 'abort: cannot run revset benchmark'
55 sys.exit(exc.returncode) 58 sys.exit(exc.returncode)
72 75
73 76
74 parser = OptionParser(usage="usage: %prog [options] <revs>") 77 parser = OptionParser(usage="usage: %prog [options] <revs>")
75 parser.add_option("-f", "--file", 78 parser.add_option("-f", "--file",
76 help="read revset from FILE", metavar="FILE") 79 help="read revset from FILE", metavar="FILE")
80 parser.add_option("-R", "--repo",
81 help="run benchmark on REPO", metavar="REPO")
77 82
78 (options, args) = parser.parse_args() 83 (options, args) = parser.parse_args()
79 84
80 if len(sys.argv) < 2: 85 if len(sys.argv) < 2:
81 parser.print_help() 86 parser.print_help()
111 print "----------------------------" 116 print "----------------------------"
112 update(r) 117 update(r)
113 res = [] 118 res = []
114 results.append(res) 119 results.append(res)
115 for idx, rset in enumerate(revsets): 120 for idx, rset in enumerate(revsets):
116 data = perf(rset) 121 data = perf(rset, target=options.repo)
117 res.append(data) 122 res.append(data)
118 print "%i)" % idx, data 123 print "%i)" % idx, data
119 sys.stdout.flush() 124 sys.stdout.flush()
120 print "----------------------------" 125 print "----------------------------"
121 126