Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: bench/check_bench_regressions.py

Issue 201423002: gen_bench_expectations to generate bench expectations files. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: adds reference to settings Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « bench/bench_util.py ('k') | bench/gen_bench_expectations.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ''' 1 '''
2 Created on May 16, 2011 2 Created on May 16, 2011
3 3
4 @author: bungeman 4 @author: bungeman
5 ''' 5 '''
6 import bench_util 6 import bench_util
7 import getopt 7 import getopt
8 import httplib 8 import httplib
9 import itertools 9 import itertools
10 import json 10 import json
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 self.config == other.config and 73 self.config == other.config and
74 self.time_type == other.time_type and 74 self.time_type == other.time_type and
75 self.settings == other.settings) 75 self.settings == other.settings)
76 76
77 def __hash__(self): 77 def __hash__(self):
78 return (hash(self.bench) ^ 78 return (hash(self.bench) ^
79 hash(self.config) ^ 79 hash(self.config) ^
80 hash(self.time_type) ^ 80 hash(self.time_type) ^
81 hash(frozenset(self.settings.iteritems()))) 81 hash(frozenset(self.settings.iteritems())))
82 82
83 def parse_dir(directory, default_settings, revision, rep):
84 """Parses bench data from bench logs files.
85 revision can be either svn revision or git commit hash.
86 """
87 revision_data_points = [] # list of BenchDataPoint
88 file_list = os.listdir(directory)
89 file_list.sort()
90 for bench_file in file_list:
91 scalar_type = None
92 # Scalar type, if any, is in the bench filename after revision
93 if (len(revision) > MAX_SVN_REV_LENGTH and
94 bench_file.startswith('bench_' + revision + '_')):
95 # The revision is GIT commit hash.
96 scalar_type = bench_file[len(revision) + len('bench_') + 1:]
97 elif (bench_file.startswith('bench_r' + revision + '_') and
98 revision.isdigit()):
99 # The revision is SVN number
100 scalar_type = bench_file[len(revision) + len('bench_r') + 1:]
101 else:
102 continue
103
104 file_handle = open(directory + '/' + bench_file, 'r')
105
106 default_settings['scalar'] = scalar_type
107 revision_data_points.extend(
108 bench_util.parse(default_settings, file_handle, rep))
109 file_handle.close()
110 return revision_data_points
111
112 def create_bench_dict(revision_data_points): 83 def create_bench_dict(revision_data_points):
113 """Convert current revision data into a dictionary of line data. 84 """Convert current revision data into a dictionary of line data.
114 85
115 Args: 86 Args:
116 revision_data_points: a list of bench data points 87 revision_data_points: a list of bench data points
117 88
118 Returns: 89 Returns:
119 a dictionary of this form: 90 a dictionary of this form:
120 keys = Label objects 91 keys = Label objects
121 values = the corresponding bench value 92 values = the corresponding bench value
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 for ratio in ratios: 170 for ratio in ratios:
200 li.extend(exceptions[i][ratio]) 171 li.extend(exceptions[i][ratio])
201 header = '%s benches got slower (sorted by %% difference):' % len(li) 172 header = '%s benches got slower (sorted by %% difference):' % len(li)
202 if i == FASTER: 173 if i == FASTER:
203 header = header.replace('slower', 'faster') 174 header = header.replace('slower', 'faster')
204 outputs.extend(['', header] + li) 175 outputs.extend(['', header] + li)
205 176
206 if outputs: 177 if outputs:
207 raise Exception('\n'.join(outputs)) 178 raise Exception('\n'.join(outputs))
208 179
180
209 def main(): 181 def main():
210 """Parses command line and checks bench expectations.""" 182 """Parses command line and checks bench expectations."""
211 try: 183 try:
212 opts, _ = getopt.getopt(sys.argv[1:], 184 opts, _ = getopt.getopt(sys.argv[1:],
213 "a:b:d:e:r:", 185 "a:b:d:e:r:",
214 "default-setting=") 186 "default-setting=")
215 except getopt.GetoptError, err: 187 except getopt.GetoptError, err:
216 print str(err) 188 print str(err)
217 usage() 189 usage()
218 sys.exit(2) 190 sys.exit(2)
(...skipping 22 matching lines...) Expand all
241 except ValueError: 213 except ValueError:
242 usage() 214 usage()
243 sys.exit(2) 215 sys.exit(2)
244 216
245 if directory is None or bot is None or rev is None: 217 if directory is None or bot is None or rev is None:
246 usage() 218 usage()
247 sys.exit(2) 219 sys.exit(2)
248 220
249 platform_and_alg = bot + '-' + rep 221 platform_and_alg = bot + '-' + rep
250 222
251 data_points = parse_dir(directory, 223 data_points = bench_util.parse_skp_bench_data(directory, rev, rep)
252 {}, # Sets default settings to empty.
253 rev,
254 rep)
255 224
256 bench_dict = create_bench_dict(data_points) 225 bench_dict = create_bench_dict(data_points)
257 226
258 if bench_expectations: 227 if bench_expectations:
259 check_expectations(bench_dict, bench_expectations, platform_and_alg) 228 check_expectations(bench_dict, bench_expectations, platform_and_alg)
260 229
261 230
262 if __name__ == "__main__": 231 if __name__ == "__main__":
263 main() 232 main()
OLDNEW
« no previous file with comments | « bench/bench_util.py ('k') | bench/gen_bench_expectations.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698