Skip to content

Commit 5cd17c8

Browse files
committed
Merge branch 'shigoto/performance-regression-framework' into shigoto/performance-regression-migrate-tests
2 parents e7e5430 + e130047 commit 5cd17c8

File tree

1 file changed

+29
-53
lines changed

1 file changed

+29
-53
lines changed

src/lib/testing/perf-regression.ts

Lines changed: 29 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -172,18 +172,32 @@ function createPerformanceSession(
172172

173173
if (DUMP) {
174174
if (label === 'prove') {
175-
dumpProve(perfRegressionJson, programName, methodName!, info, time);
175+
dumpMethodTime(perfRegressionJson, programName, methodName!, info, time, 'prove');
176176
} else {
177-
dumpVerify(perfRegressionJson, programName, methodName!, info, time);
177+
dumpMethodTime(perfRegressionJson, programName, methodName!, info, time, 'verify');
178178
}
179179
return;
180180
}
181181

182182
if (CHECK) {
183183
if (label === 'prove') {
184-
checkProve(perfRegressionJson, programName, methodName!, info.digest, time);
184+
checkMethodTime(
185+
perfRegressionJson,
186+
programName,
187+
methodName!,
188+
info.digest,
189+
time,
190+
'prove'
191+
);
185192
} else {
186-
checkVerify(perfRegressionJson, programName, methodName!, info.digest, time);
193+
checkMethodTime(
194+
perfRegressionJson,
195+
programName,
196+
methodName!,
197+
info.digest,
198+
time,
199+
'verify'
200+
);
187201
}
188202
return;
189203
}
@@ -235,48 +249,26 @@ function dumpCompile(
235249
fs.writeFileSync(FILE_PATH, JSON.stringify(perfRegressionJson, null, 2));
236250
}
237251

238-
function dumpProve(
252+
function dumpMethodTime(
239253
perfRegressionJson: Record<string, PerfRegressionEntry>,
240254
programName: string,
241255
methodName: string,
242256
info: ConstraintSystemSummary,
243-
time: number
257+
time: number,
258+
label: 'prove' | 'verify'
244259
) {
245260
const prev = perfRegressionJson[programName];
246261
const merged: PerfRegressionEntry = prev
247262
? { ...prev, methods: { ...prev.methods } }
248263
: { methods: {} };
249264

250-
merged.methods[methodName] = {
251-
rows: info.rows,
252-
digest: info.digest,
253-
// keep any existing verifyTime if present
254-
verifyTime: merged.methods[methodName]?.verifyTime,
255-
proveTime: time,
256-
};
257-
258-
perfRegressionJson[programName] = merged;
259-
fs.writeFileSync(FILE_PATH, JSON.stringify(perfRegressionJson, null, 2));
260-
}
261-
262-
function dumpVerify(
263-
perfRegressionJson: Record<string, PerfRegressionEntry>,
264-
programName: string,
265-
methodName: string,
266-
info: ConstraintSystemSummary,
267-
time: number
268-
) {
269-
const prev = perfRegressionJson[programName];
270-
const merged: PerfRegressionEntry = prev
271-
? { ...prev, methods: { ...prev.methods } }
272-
: { methods: {} };
265+
const prevMethod = merged.methods[methodName] ?? {};
273266

274267
merged.methods[methodName] = {
275268
rows: info.rows,
276269
digest: info.digest,
277-
// keep any existing proveTime if present
278-
proveTime: merged.methods[methodName]?.proveTime,
279-
verifyTime: time,
270+
proveTime: label === 'prove' ? time : prevMethod.proveTime,
271+
verifyTime: label === 'verify' ? time : prevMethod.verifyTime,
280272
};
281273

282274
perfRegressionJson[programName] = merged;
@@ -298,34 +290,18 @@ function checkCompile(
298290
});
299291
}
300292

301-
function checkProve(
302-
perfRegressionJson: Record<string, PerfRegressionEntry>,
303-
programName: string,
304-
methodName: string,
305-
digest: string,
306-
actualTime: number
307-
) {
308-
checkAgainstBaseline({
309-
perfRegressionJson,
310-
programName,
311-
label: 'prove',
312-
methodName,
313-
digest,
314-
actualTime,
315-
});
316-
}
317-
318-
function checkVerify(
293+
function checkMethodTime(
319294
perfRegressionJson: Record<string, PerfRegressionEntry>,
320295
programName: string,
321296
methodName: string,
322297
digest: string,
323-
actualTime: number
298+
actualTime: number,
299+
label: 'prove' | 'verify'
324300
) {
325301
checkAgainstBaseline({
326302
perfRegressionJson,
327303
programName,
328-
label: 'verify',
304+
label,
329305
methodName,
330306
digest,
331307
actualTime,
@@ -423,7 +399,7 @@ function checkAgainstBaseline(params: {
423399
}
424400

425401
const expected = label === 'prove' ? baseMethod.proveTime : baseMethod.verifyTime;
426-
const labelPretty = label === 'prove' ? 'Prove' : 'Verify';
402+
const labelPretty = label.charAt(0).toUpperCase();
427403
if (expected == null) {
428404
throw new Error(
429405
`No baseline ${label}Time for ${programName}.${methodName}. Run --dump (${label}) to set it.`

0 commit comments

Comments
 (0)