-
Notifications
You must be signed in to change notification settings - Fork 292
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore(avm): basic stat collection #7283
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @fcarreiro and the rest of your teammates on Graphite |
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Proof generationEach column represents the number of threads used in proof generation.
L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 8 txs.
Circuits statsStats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.
Stats on running time collected for app circuits
AVM SimulationTime to simulate various public functions in the AVM.
Public DB AccessTime to access various public DBs.
Tree insertion statsThe duration to insert a fixed batch of leaves into each tree type.
MiscellaneousTransaction sizes based on how many contract classes are registered in the tx.
Transaction size based on fee payment method | Metric | | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fantastic job and very clean code! Please look at my feedback.
Long term I am wondering if this would be preferable for external audits if we could remove the stats related code from the generated cpp. On the other hand, it introduces simple wrapper. Alternatively, code auditor could review after preprocessor run.
2de19aa
to
c5e9d4a
Compare
Merge activity
|
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.45.1</summary> ## [0.45.1](aztec-package-v0.45.0...aztec-package-v0.45.1) (2024-07-04) ### Miscellaneous * **aztec-package:** Synchronize aztec-packages versions </details> <details><summary>barretenberg.js: 0.45.1</summary> ## [0.45.1](barretenberg.js-v0.45.0...barretenberg.js-v0.45.1) (2024-07-04) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.45.1</summary> ## [0.45.1](aztec-packages-v0.45.0...aztec-packages-v0.45.1) (2024-07-04) ### Features * Add support for fieldable in events ([#7310](#7310)) ([694cebc](694cebc)), closes [#6951](#6951) * **avm:** Use template engine for codegen ([#7299](#7299)) ([d4359a3](d4359a3)) * Build releases for `aarch64-unknown-linux-gnu` target (noir-lang/noir#5289) ([2ae17f2](2ae17f2)) * Create codeql.yml ([#7318](#7318)) ([11fcfd2](11fcfd2)) * Deploy l1 contracts on devnet ([#7306](#7306)) ([b8eef86](b8eef86)) * Implement trait dispatch in the comptime interpreter (noir-lang/noir#5376) ([ccfa69c](ccfa69c)) * Lsp "find all references" (noir-lang/noir#5395) ([10076d9](10076d9)) * Lsp rename struct (noir-lang/noir#5380) ([2ae17f2](2ae17f2)) * **lsp:** Allow function rename (noir-lang/noir#4294) ([ccfa69c](ccfa69c)) * Remove note hash nullifier counter. ([#7294](#7294)) ([c0c9144](c0c9144)) * Sync from aztec-packages (noir-lang/noir#5387) ([ccfa69c](ccfa69c)) * Sync from aztec-packages (noir-lang/noir#5401) ([10076d9](10076d9)) ### Bug Fixes * Correctly detect signed/unsigned integer overflows/underflows (noir-lang/noir#5375) ([10076d9](10076d9)) * **docs:** Fix broken docs link to gihtub (noir-lang/noir#5398) ([10076d9](10076d9)) * **docs:** Fix colour leak ([#7289](#7289)) ([d3388d4](d3388d4)) * Don't panic when using undefined variables in the interpreter (noir-lang/noir#5381) ([10076d9](10076d9)) * Go to definition from `use` statement (noir-lang/noir#5390) ([2ae17f2](2ae17f2)) * Go to definition from aliased use (noir-lang/noir#5396) ([10076d9](10076d9)) * ICE when using a comptime let variable in runtime code (noir-lang/noir#5391) ([10076d9](10076d9)) * Include artifacts in noir-contracts package.json ([#7339](#7339)) ([7dd87c7](7dd87c7)) * Only create d.ts files for contract artifacts ([#7307](#7307)) ([b5e2a67](b5e2a67)) * Remove event selector from unencrypted log ([#7309](#7309)) ([c6eb734](c6eb734)) * Remove panics in the interpreter when a builtin fails to type check (noir-lang/noir#5382) ([ccfa69c](ccfa69c)) * Replace expects in interpreter with errors (noir-lang/noir#5383) ([ccfa69c](ccfa69c)) * Replace std::HashMap with FxHashMap to fix frontend indeterminism (noir-lang/noir#5385) ([ccfa69c](ccfa69c)) * Truncate flamegraph text to the right ([#7333](#7333)) ([b7c6593](b7c6593)) ### Miscellaneous * Add bb-pilcom to rust analyzer ([#7317](#7317)) ([694e68e](694e68e)) * ARGS_HASH constants 64 -> 16 ([#7284](#7284)) ([c19029a](c19029a)) * **avm:** Basic stat collection ([#7283](#7283)) ([adf2331](adf2331)) * **avm:** Less code in prover and verifier ([#7302](#7302)) ([f401a9a](f401a9a)) * **avm:** Migrate lookups and permutations ([#7335](#7335)) ([56fe4fe](56fe4fe)) * **avm:** Migrate to template engine ([#7316](#7316)) ([0fbfe11](0fbfe11)) * **avm:** Re-ordering routines by opcode order ([#7298](#7298)) ([4bb512d](4bb512d)) * **avm:** Remove shifts from full row ([#7327](#7327)) ([4d641ee](4d641ee)) * Charge for more l2 gas costs ([#7157](#7157)) ([3ab00c4](3ab00c4)) * **docs:** Remove persona boxes from the landing page (noir-lang/noir#5400) ([10076d9](10076d9)) * Nuking "new" from names ([#7273](#7273)) ([b12c6cb](b12c6cb)) * Refactor conversion between `FieldElement` and signed integers (noir-lang/noir#5397) ([10076d9](10076d9)) * Replace relative paths to noir-protocol-circuits ([0124665](0124665)) * Replace relative paths to noir-protocol-circuits ([4007885](4007885)) * Update flamegraph script link ([#7329](#7329)) ([0ec83ee](0ec83ee)) * Use `mod.nr` files in stdlib (noir-lang/noir#5379) ([ccfa69c](ccfa69c)) </details> <details><summary>barretenberg: 0.45.1</summary> ## [0.45.1](barretenberg-v0.45.0...barretenberg-v0.45.1) (2024-07-04) ### Features * **avm:** Use template engine for codegen ([#7299](#7299)) ([d4359a3](d4359a3)) ### Miscellaneous * **avm:** Basic stat collection ([#7283](#7283)) ([adf2331](adf2331)) * **avm:** Less code in prover and verifier ([#7302](#7302)) ([f401a9a](f401a9a)) * **avm:** Migrate lookups and permutations ([#7335](#7335)) ([56fe4fe](56fe4fe)) * **avm:** Migrate to template engine ([#7316](#7316)) ([0fbfe11](0fbfe11)) * **avm:** Re-ordering routines by opcode order ([#7298](#7298)) ([4bb512d](4bb512d)) * **avm:** Remove shifts from full row ([#7327](#7327)) ([4d641ee](4d641ee)) * Nuking "new" from names ([#7273](#7273)) ([b12c6cb](b12c6cb)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.45.1</summary> ## [0.45.1](AztecProtocol/aztec-packages@aztec-package-v0.45.0...aztec-package-v0.45.1) (2024-07-04) ### Miscellaneous * **aztec-package:** Synchronize aztec-packages versions </details> <details><summary>barretenberg.js: 0.45.1</summary> ## [0.45.1](AztecProtocol/aztec-packages@barretenberg.js-v0.45.0...barretenberg.js-v0.45.1) (2024-07-04) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.45.1</summary> ## [0.45.1](AztecProtocol/aztec-packages@aztec-packages-v0.45.0...aztec-packages-v0.45.1) (2024-07-04) ### Features * Add support for fieldable in events ([#7310](AztecProtocol/aztec-packages#7310)) ([694cebc](AztecProtocol/aztec-packages@694cebc)), closes [#6951](AztecProtocol/aztec-packages#6951) * **avm:** Use template engine for codegen ([#7299](AztecProtocol/aztec-packages#7299)) ([d4359a3](AztecProtocol/aztec-packages@d4359a3)) * Build releases for `aarch64-unknown-linux-gnu` target (noir-lang/noir#5289) ([2ae17f2](AztecProtocol/aztec-packages@2ae17f2)) * Create codeql.yml ([#7318](AztecProtocol/aztec-packages#7318)) ([11fcfd2](AztecProtocol/aztec-packages@11fcfd2)) * Deploy l1 contracts on devnet ([#7306](AztecProtocol/aztec-packages#7306)) ([b8eef86](AztecProtocol/aztec-packages@b8eef86)) * Implement trait dispatch in the comptime interpreter (noir-lang/noir#5376) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Lsp "find all references" (noir-lang/noir#5395) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * Lsp rename struct (noir-lang/noir#5380) ([2ae17f2](AztecProtocol/aztec-packages@2ae17f2)) * **lsp:** Allow function rename (noir-lang/noir#4294) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Remove note hash nullifier counter. ([#7294](AztecProtocol/aztec-packages#7294)) ([c0c9144](AztecProtocol/aztec-packages@c0c9144)) * Sync from aztec-packages (noir-lang/noir#5387) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Sync from aztec-packages (noir-lang/noir#5401) ([10076d9](AztecProtocol/aztec-packages@10076d9)) ### Bug Fixes * Correctly detect signed/unsigned integer overflows/underflows (noir-lang/noir#5375) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * **docs:** Fix broken docs link to gihtub (noir-lang/noir#5398) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * **docs:** Fix colour leak ([#7289](AztecProtocol/aztec-packages#7289)) ([d3388d4](AztecProtocol/aztec-packages@d3388d4)) * Don't panic when using undefined variables in the interpreter (noir-lang/noir#5381) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * Go to definition from `use` statement (noir-lang/noir#5390) ([2ae17f2](AztecProtocol/aztec-packages@2ae17f2)) * Go to definition from aliased use (noir-lang/noir#5396) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * ICE when using a comptime let variable in runtime code (noir-lang/noir#5391) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * Include artifacts in noir-contracts package.json ([#7339](AztecProtocol/aztec-packages#7339)) ([7dd87c7](AztecProtocol/aztec-packages@7dd87c7)) * Only create d.ts files for contract artifacts ([#7307](AztecProtocol/aztec-packages#7307)) ([b5e2a67](AztecProtocol/aztec-packages@b5e2a67)) * Remove event selector from unencrypted log ([#7309](AztecProtocol/aztec-packages#7309)) ([c6eb734](AztecProtocol/aztec-packages@c6eb734)) * Remove panics in the interpreter when a builtin fails to type check (noir-lang/noir#5382) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Replace expects in interpreter with errors (noir-lang/noir#5383) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Replace std::HashMap with FxHashMap to fix frontend indeterminism (noir-lang/noir#5385) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Truncate flamegraph text to the right ([#7333](AztecProtocol/aztec-packages#7333)) ([b7c6593](AztecProtocol/aztec-packages@b7c6593)) ### Miscellaneous * Add bb-pilcom to rust analyzer ([#7317](AztecProtocol/aztec-packages#7317)) ([694e68e](AztecProtocol/aztec-packages@694e68e)) * ARGS_HASH constants 64 -> 16 ([#7284](AztecProtocol/aztec-packages#7284)) ([c19029a](AztecProtocol/aztec-packages@c19029a)) * **avm:** Basic stat collection ([#7283](AztecProtocol/aztec-packages#7283)) ([adf2331](AztecProtocol/aztec-packages@adf2331)) * **avm:** Less code in prover and verifier ([#7302](AztecProtocol/aztec-packages#7302)) ([f401a9a](AztecProtocol/aztec-packages@f401a9a)) * **avm:** Migrate lookups and permutations ([#7335](AztecProtocol/aztec-packages#7335)) ([56fe4fe](AztecProtocol/aztec-packages@56fe4fe)) * **avm:** Migrate to template engine ([#7316](AztecProtocol/aztec-packages#7316)) ([0fbfe11](AztecProtocol/aztec-packages@0fbfe11)) * **avm:** Re-ordering routines by opcode order ([#7298](AztecProtocol/aztec-packages#7298)) ([4bb512d](AztecProtocol/aztec-packages@4bb512d)) * **avm:** Remove shifts from full row ([#7327](AztecProtocol/aztec-packages#7327)) ([4d641ee](AztecProtocol/aztec-packages@4d641ee)) * Charge for more l2 gas costs ([#7157](AztecProtocol/aztec-packages#7157)) ([3ab00c4](AztecProtocol/aztec-packages@3ab00c4)) * **docs:** Remove persona boxes from the landing page (noir-lang/noir#5400) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * Nuking "new" from names ([#7273](AztecProtocol/aztec-packages#7273)) ([b12c6cb](AztecProtocol/aztec-packages@b12c6cb)) * Refactor conversion between `FieldElement` and signed integers (noir-lang/noir#5397) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * Replace relative paths to noir-protocol-circuits ([0124665](AztecProtocol/aztec-packages@0124665)) * Replace relative paths to noir-protocol-circuits ([4007885](AztecProtocol/aztec-packages@4007885)) * Update flamegraph script link ([#7329](AztecProtocol/aztec-packages#7329)) ([0ec83ee](AztecProtocol/aztec-packages@0ec83ee)) * Use `mod.nr` files in stdlib (noir-lang/noir#5379) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) </details> <details><summary>barretenberg: 0.45.1</summary> ## [0.45.1](AztecProtocol/aztec-packages@barretenberg-v0.45.0...barretenberg-v0.45.1) (2024-07-04) ### Features * **avm:** Use template engine for codegen ([#7299](AztecProtocol/aztec-packages#7299)) ([d4359a3](AztecProtocol/aztec-packages@d4359a3)) ### Miscellaneous * **avm:** Basic stat collection ([#7283](AztecProtocol/aztec-packages#7283)) ([adf2331](AztecProtocol/aztec-packages@adf2331)) * **avm:** Less code in prover and verifier ([#7302](AztecProtocol/aztec-packages#7302)) ([f401a9a](AztecProtocol/aztec-packages@f401a9a)) * **avm:** Migrate lookups and permutations ([#7335](AztecProtocol/aztec-packages#7335)) ([56fe4fe](AztecProtocol/aztec-packages@56fe4fe)) * **avm:** Migrate to template engine ([#7316](AztecProtocol/aztec-packages#7316)) ([0fbfe11](AztecProtocol/aztec-packages@0fbfe11)) * **avm:** Re-ordering routines by opcode order ([#7298](AztecProtocol/aztec-packages#7298)) ([4bb512d](AztecProtocol/aztec-packages@4bb512d)) * **avm:** Remove shifts from full row ([#7327](AztecProtocol/aztec-packages#7327)) ([4d641ee](AztecProtocol/aztec-packages@4d641ee)) * Nuking "new" from names ([#7273](AztecProtocol/aztec-packages#7273)) ([b12c6cb](AztecProtocol/aztec-packages@b12c6cb)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Colelcts and prints stats for
avm_prove
when BB is compiled with inRelWithAssert
mode orAVM_TRACK_STATS
is defined.Has no impact otherwise.