Mercurial > hg
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 |