|
1 | 1 | import { Bytes, Field, Hash, Poseidon, UInt8, ZkProgram, verify } from 'o1js'; |
| 2 | +import { Performance } from '../../lib/testing/perf-regression.js'; |
2 | 3 |
|
3 | 4 | const SmallProgram = ZkProgram({ |
4 | 5 | name: 'small-program', |
@@ -52,21 +53,24 @@ console.log('small program rows: ', csSmall.poseidonHash.rows); |
52 | 53 | const csBig = await BigProgram.analyzeMethods(); |
53 | 54 | console.log('big program rows: ', csBig.combinedHash.rows, '\n'); |
54 | 55 |
|
55 | | -console.time('compile small'); |
| 56 | +const perfSmall = Performance.create(SmallProgram.name, csSmall); |
| 57 | +const perfBig = Performance.create(BigProgram.name, csBig); |
| 58 | + |
| 59 | +perfSmall.start('compile'); |
56 | 60 | await SmallProgram.compile(); |
57 | | -console.timeEnd('compile small'); |
| 61 | +perfSmall.end(); |
58 | 62 |
|
59 | | -console.time('compile big'); |
| 63 | +perfBig.start('compile'); |
60 | 64 | const { verificationKey: verificationKeyBig } = await BigProgram.compile(); |
61 | | -console.timeEnd('compile big'); |
| 65 | +perfBig.end(); |
62 | 66 |
|
63 | | -console.time('prove small'); |
| 67 | +perfSmall.start('prove', 'poseidonHash'); |
64 | 68 | const proofSmall = await SmallProgram.poseidonHash(Field.random()); |
65 | | -console.timeEnd('prove small'); |
| 69 | +perfSmall.end(); |
66 | 70 |
|
67 | | -console.time('prove big'); |
| 71 | +perfBig.start('prove', 'combinedHash'); |
68 | 72 | const { proof: proofBig } = await BigProgram.combinedHash(proofSmall.proof); |
69 | | -console.timeEnd('prove big'); |
| 73 | +perfBig.end(); |
70 | 74 |
|
71 | 75 | console.time('verify big'); |
72 | 76 | await verify(proofBig, verificationKeyBig); |
|
0 commit comments