Skip to content
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: Add benchmarking dashboard #7068

Merged
merged 15 commits into from
Jan 17, 2025
Merged

chore: Add benchmarking dashboard #7068

merged 15 commits into from
Jan 17, 2025

Conversation

TomAFrench
Copy link
Member

@TomAFrench TomAFrench commented Jan 14, 2025

Description

Problem*

Resolves

Summary*

This PR adds a new benchmarking dashboard at https://noir-lang.github.io/noir/dev/bench/. Results will be added to this on each push to master.

We'll still be benchmarking on each PR however comments will only be posted if there's a regression above a certain percentage (currently set to a quite aggressive 10% but we can dial that back if necessary)

I'll turn off the comment systems for metrics other than gate counts in a separate PR.

Additional Context

Documentation*

Check one:

  • No documentation needed.
  • Documentation included in this PR.
  • [For Experimental Features] Documentation to be submitted in a separate PR.

PR Checklist*

  • I have tested the changes locally.
  • I have formatted the changes with Prettier and/or cargo fmt on default settings.

Copy link
Contributor

github-actions bot commented Jan 15, 2025

Compilation Report

Program Compilation Time %
sha256_regression 1.160s 8%
regression_4709 0.837s -4%
ram_blowup_regression 16.600s 1%
rollup-root 3.922s 8%
rollup-merge 2.164s 8%
rollup-block-root-single-tx 143.000s 0%
rollup-block-root-empty 2.016s -6%
rollup-block-root 137.000s -2%
rollup-block-merge 3.488s -5%
rollup-base-public 27.840s -1%
rollup-base-private 10.100s -3%
private-kernel-tail 1.051s 1%
private-kernel-reset 6.126s 2%
private-kernel-inner 2.174s 2%

Copy link
Contributor

github-actions bot commented Jan 15, 2025

Execution Report

Program Execution Time %
sha256_regression 0.051s -2%
regression_4709 0.001s 0%
ram_blowup_regression 0.611s 1%
rollup-root 0.105s 0%
rollup-merge 0.006s 0%
rollup-block-root 37.000s 1%
rollup-block-merge 0.104s 0%
rollup-base-public 1.230s -1%
rollup-base-private 0.449s -1%
private-kernel-tail 0.019s -6%
private-kernel-reset 0.314s -2%
private-kernel-inner 0.068s -6%

Copy link
Contributor

github-actions bot commented Jan 15, 2025

Execution Memory Report

Program Peak Memory %
keccak256 74.630 100%
workspace 123.640 100%
regression_4709 315.930 100%
ram_blowup_regression 512.570 100%
rollup-root 498.200 100%
rollup-merge 472.940 100%
rollup-block-root 1220.000 100%
rollup-block-merge 498.210 100%
rollup-base-public 734.090 100%
rollup-base-private 590.400 100%
private-kernel-tail 180.820 100%
private-kernel-reset 245.440 100%
private-kernel-inner 208.840 100%

Copy link
Contributor

github-actions bot commented Jan 15, 2025

Compilation Memory Report

Program Peak Memory %
keccak256 77.560 100%
workspace 123.850 100%
regression_4709 424.070 100%
ram_blowup_regression 1460.000 100%
rollup-root 601.170 100%
rollup-merge 494.140 100%
rollup-block-root-single-tx 16060.000 100%
rollup-block-root-empty 488.320 100%
rollup-block-root 16070.000 100%
rollup-block-merge 601.160 100%
rollup-base-public 2380.000 100%
rollup-base-private 1140.000 100%
private-kernel-tail 207.340 100%
private-kernel-reset 584.400 100%
private-kernel-inner 294.600 100%

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Compilation Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.10.

Benchmark suite Current: 79f1d8e Previous: 1fb25cd Ratio
sha256_regression 1.16 s 1.01 s 1.15

This comment was automatically generated by workflow using github-action-benchmark.

CC: @TomAFrench

@TomAFrench TomAFrench marked this pull request as ready for review January 17, 2025 15:08
@TomAFrench TomAFrench requested a review from vezenovm January 17, 2025 15:11
@TomAFrench TomAFrench changed the title chore: experimenting with benchmark action chore: Add benchmarking dashboard Jan 17, 2025
test_programs/parse_memory.sh Show resolved Hide resolved
@vezenovm
Copy link
Contributor

For a follow-up it would be nice to have separate pages for our memory/execution memory and compilation/execution timing reports. The dashboard is a bit long with all of our reports. I haven't looked into github-action-benchmark deeply though as to whether this is possible.

@TomAFrench
Copy link
Member Author

Yeah, I agree that it's not the prettiest but I don't want to invest too much time into it as I'm planning to migrate to Charlie's tool once it's ready.

Copy link
Contributor

Changes to number of Brillig opcodes executed

Generated at commit: 7ac4bbe0ed1ae5af7ac1e886f4118136b9964231, compared to commit: ed12ad751336e726436b4fa7aad6958497e96285

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
higher_order_functions_inliner_min -165 ✅ -5.86%
higher_order_functions_inliner_zero -90 ✅ -6.79%

Full diff report 👇
Program Brillig opcodes (+/-) %
slices_inliner_min 4,549 (-75) -1.62%
higher_order_functions_inliner_min 2,651 (-165) -5.86%
higher_order_functions_inliner_zero 1,236 (-90) -6.79%

Copy link
Contributor

Changes to Brillig bytecode sizes

Generated at commit: 7ac4bbe0ed1ae5af7ac1e886f4118136b9964231, compared to commit: ed12ad751336e726436b4fa7aad6958497e96285

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
higher_order_functions_inliner_zero +26 ❌ +3.90%
slices_inliner_min -18 ✅ -0.68%

Full diff report 👇
Program Brillig opcodes (+/-) %
higher_order_functions_inliner_zero 692 (+26) +3.90%
higher_order_functions_inliner_min 1,448 (+4) +0.28%
slices_inliner_min 2,615 (-18) -0.68%

@TomAFrench TomAFrench enabled auto-merge January 17, 2025 16:36
@TomAFrench TomAFrench added this pull request to the merge queue Jan 17, 2025
Merged via the queue into master with commit df71bde Jan 17, 2025
99 checks passed
@TomAFrench TomAFrench deleted the tf/benchmark-action branch January 17, 2025 16:46
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 18, 2025
…oir-lang/noir#7100)

feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 18, 2025
…oir#7100)

feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 19, 2025
…oir-lang/noir#7100)

feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 19, 2025
…oir#7100)

feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.

2 participants