comparison contrib/revsetbenchmarks.py @ 20854:bad5399c5d5f

revsetbenchmark: retrieve the benchmark value in python We retrieve the output of the perf extension and print it ourself. This open the door to processing of this data in the script.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Wed, 26 Mar 2014 18:39:56 -0700
parents 95293cf67871
children dfad9bb23ab4
comparison
equal deleted inserted replaced
20853:95293cf67871 20854:bad5399c5d5f
12 # 12 #
13 # This script also does one run of the current version of mercurial installed 13 # This script also does one run of the current version of mercurial installed
14 # to compare performance. 14 # to compare performance.
15 15
16 import sys 16 import sys
17 from subprocess import check_call, check_output, CalledProcessError 17 from subprocess import check_call, check_output, CalledProcessError, STDOUT
18 18
19 19
20 def update(rev): 20 def update(rev):
21 """update the repo to a revision""" 21 """update the repo to a revision"""
22 try: 22 try:
26 sys.exit(exc.returncode) 26 sys.exit(exc.returncode)
27 27
28 def perf(revset): 28 def perf(revset):
29 """run benchmark for this very revset""" 29 """run benchmark for this very revset"""
30 try: 30 try:
31 check_call(['./hg', '--config', 'extensions.perf=contrib/perf.py', 31 output = check_output(['./hg',
32 'perfrevset', revset]) 32 '--config',
33 'extensions.perf=contrib/perf.py',
34 'perfrevset',
35 revset],
36 stderr=STDOUT)
37 output = output.lstrip('!') # remove useless ! in this context
38 return output.strip()
33 except CalledProcessError, exc: 39 except CalledProcessError, exc:
34 print >> sys.stderr, 'abort: cannot run revset benchmark' 40 print >> sys.stderr, 'abort: cannot run revset benchmark'
35 sys.exit(exc.returncode) 41 sys.exit(exc.returncode)
36 42
37 def printrevision(rev): 43 def printrevision(rev):
76 print "----------------------------" 82 print "----------------------------"
77 printrevision(r) 83 printrevision(r)
78 print "----------------------------" 84 print "----------------------------"
79 update(r) 85 update(r)
80 for idx, rset in enumerate(revsets): 86 for idx, rset in enumerate(revsets):
81 sys.stdout.write("%i) " % idx) 87
82 sys.stdout.flush() 88 print "%i)" % idx, perf(rset)
83 perf(rset)
84 print "----------------------------" 89 print "----------------------------"
85 90