34
34
fields = ["exectime" , "frontend" , "backend" , "simcode" , "templates" , "compile" , "simulate" , "verify" ]
35
35
entryhead = "<tr><th>Branch</th><th>Total</th><th>Frontend</th><th>Backend</th><th>SimCode</th><th>Templates</th><th>Compilation</th><th>Simulation</th><th>Verification</th>\n "
36
36
37
+ timeMinPhase = 4 # Need to have completed code generation to report performance regressions
37
38
timeRel = 1.7 # Minimum 1.7x time is registered as a performance regression
38
39
timeAbs = 10 # Ignore performance regressions for times <10s...
39
40
@@ -124,14 +125,16 @@ def libraryLink(branch, libname):
124
125
(SELECT model,libname,finalphase,frontend,backend,simcode,templates,compile,simulate FROM [%s] WHERE date IN (?,?) AND libname IN (%s) ORDER BY date)
125
126
GROUP BY model,libname HAVING
126
127
(MIN(finalphase) <> MAX(finalphase)) OR
127
- (MAX(frontend) > ?*MIN(frontend) AND MAX(frontend) > ?) OR
128
- (MAX(backend) > ?*MIN(backend) AND MAX(backend) > ?) OR
129
- (MAX(simcode) > ?*MIN(simcode) AND MAX(simcode) > ?) OR
130
- (MAX(templates) > ?*MIN(templates) AND MAX(templates) > ?) OR
131
- (MAX(compile) > ?*MIN(compile) AND MAX(compile) > ?) OR
132
- (MAX(simulate) > ?*MIN(simulate) AND MAX(simulate) > ?)
128
+ ((MIN(finalphase) >= ?) AND
129
+ (MAX(frontend) > ?*MIN(frontend) AND MAX(frontend) > ?) OR
130
+ (MAX(backend) > ?*MIN(backend) AND MAX(backend) > ?) OR
131
+ (MAX(simcode) > ?*MIN(simcode) AND MAX(simcode) > ?) OR
132
+ (MAX(templates) > ?*MIN(templates) AND MAX(templates) > ?) OR
133
+ (MAX(compile) > ?*MIN(compile) AND MAX(compile) > ?) OR
134
+ (MAX(simulate) > ?*MIN(simulate) AND MAX(simulate) > ?)
135
+ )
133
136
""" % (branch ,"," .join (["'%s'" % libname for libname in startdates [d1lib ]]))
134
- cursor .execute (query , (d1lib ,d2 ,timeRel ,timeAbs ,timeRel ,timeAbs ,timeRel ,timeAbs ,timeRel ,timeAbs ,timeRel ,2 * timeAbs ,timeRel ,timeAbs ))
137
+ cursor .execute (query , (d1lib ,d2 ,timeMinPhase , timeRel ,timeAbs ,timeRel ,timeAbs ,timeRel ,timeAbs ,timeRel ,timeAbs ,timeRel ,2 * timeAbs ,timeRel ,timeAbs ))
135
138
regressions += cursor .fetchall ()
136
139
regressions = sorted (regressions , key = lambda x : (x [1 ],x [0 ]))
137
140
libs = set ()
@@ -153,7 +156,7 @@ def libraryLink(branch, libname):
153
156
numRegression += 1
154
157
if color is not None :
155
158
msg = "%s → %s" % (shared .finalphaseName (phase1 ),shared .finalphaseName (phase2 ))
156
- else :
159
+ elif min ( phase1 , phase2 ) >= timeMinPhase :
157
160
msgs = []
158
161
for (phase ,times ) in [(1 ,frontend ),(2 ,backend ),(3 ,simcode ),(4 ,templates ),(5 ,compile ),(6 ,simulate )]:
159
162
(t1 ,t2 ) = [float (d ) for d in times .split ("," )]
0 commit comments