feat: optimize FieldElement::num_bits#7147
Conversation
|
I don't think would show up in CI benchmarks as all of the allocations would be temporary and the time to count the numbers of bits in a field element would be insignificant when it comes to compilation. Running heaptrack locally would show the difference, also you could add a criterion benchmark to track this. |
|
Makes sense. I just benchmarked it locally and the method is like 5 times faster but, as you said, the numbers are too low for it to make a difference. So closing :-) |
d34182e to
112ebc0
Compare
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Test Suite Duration'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.
| Benchmark suite | Current: 112ebc0 | Previous: 8f20392 | Ratio |
|---|---|---|---|
AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_blob |
62 s |
51 s |
1.22 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
|
The benchmark said this is about 60% faster. Criterion doesn't show memory usage but the old method allocates memory while this new method doesn't, so I guess that's good too. |
chore: remove `disable_macros` compile option (noir-lang/noir#7468) chore(ci): add workflow to automate bumping aztec-packages commit (noir-lang/noir#7465) chore: Release Noir(1.0.0-beta.3) (noir-lang/noir#7346) chore(ci): Missing dash in profiler command argument (noir-lang/noir#7467) feat(experimental): show macro errors where they happen (noir-lang/noir#7333) feat: optimize FieldElement::num_bits (noir-lang/noir#7147) chore(profiler): Docs on profiler command and more complete error reporting (noir-lang/noir#7436) feat(ci): Release noir-inspector in binaries (noir-lang/noir#7464) chore(docs): Noir Profiler external documentation (noir-lang/noir#7457) feat(ci): Publish binaries for noir-profiler (noir-lang/noir#7443) chore: Copy #7387 docs into v1.0.0-beta.2 versioned_docs (noir-lang/noir#7458) fix: prevent incorrect ACIRgen caused by noop truncations (noir-lang/noir#7456) feat: add native `u128` type (noir-lang/noir#7301) chore: standardize that doc comments on top of statements and expression are allowed but warn (noir-lang/noir#7450) fix: don't let nargo fmt produce multiple trailing newlines (noir-lang/noir#7444)
chore: remove `disable_macros` compile option (noir-lang/noir#7468) chore(ci): add workflow to automate bumping aztec-packages commit (noir-lang/noir#7465) chore: Release Noir(1.0.0-beta.3) (noir-lang/noir#7346) chore(ci): Missing dash in profiler command argument (noir-lang/noir#7467) feat(experimental): show macro errors where they happen (noir-lang/noir#7333) feat: optimize FieldElement::num_bits (noir-lang/noir#7147) chore(profiler): Docs on profiler command and more complete error reporting (noir-lang/noir#7436) feat(ci): Release noir-inspector in binaries (noir-lang/noir#7464) chore(docs): Noir Profiler external documentation (noir-lang/noir#7457) feat(ci): Publish binaries for noir-profiler (noir-lang/noir#7443) chore: Copy #7387 docs into v1.0.0-beta.2 versioned_docs (noir-lang/noir#7458) fix: prevent incorrect ACIRgen caused by noop truncations (noir-lang/noir#7456) feat: add native `u128` type (noir-lang/noir#7301) chore: standardize that doc comments on top of statements and expression are allowed but warn (noir-lang/noir#7450) fix: don't let nargo fmt produce multiple trailing newlines (noir-lang/noir#7444)
* master: (89 commits) chore: bump external pinned commits (#7472) chore: remove `disable_macros` compile option (#7468) chore(ci): add workflow to automate bumping aztec-packages commit (#7465) chore: Release Noir(1.0.0-beta.3) (#7346) chore(ci): Missing dash in profiler command argument (#7467) feat(experimental): show macro errors where they happen (#7333) feat: optimize FieldElement::num_bits (#7147) chore(profiler): Docs on profiler command and more complete error reporting (#7436) feat(ci): Release noir-inspector in binaries (#7464) chore(docs): Noir Profiler external documentation (#7457) feat(ci): Publish binaries for noir-profiler (#7443) chore: Copy #7387 docs into v1.0.0-beta.2 versioned_docs (#7458) fix: prevent incorrect ACIRgen caused by noop truncations (#7456) feat: add native `u128` type (#7301) chore: standardize that doc comments on top of statements and expression are allowed but warn (#7450) fix: don't let nargo fmt produce multiple trailing newlines (#7444) feat(cli): add noir-execute binary (#7384) chore!: make `ResolverError::OracleMarkedAsConstrained` into a full error (#7426) chore: simplify reports (#7421) fix: do not discard negative sign from field literals in comptime interpreter (#7439) ...
fix: don't panic when shifting too much (noir-lang/noir#7429) chore: bump external pinned commits (noir-lang/noir#7472) chore: remove `disable_macros` compile option (noir-lang/noir#7468) chore(ci): add workflow to automate bumping aztec-packages commit (noir-lang/noir#7465) chore: Release Noir(1.0.0-beta.3) (noir-lang/noir#7346) chore(ci): Missing dash in profiler command argument (noir-lang/noir#7467) feat(experimental): show macro errors where they happen (noir-lang/noir#7333) feat: optimize FieldElement::num_bits (noir-lang/noir#7147) chore(profiler): Docs on profiler command and more complete error reporting (noir-lang/noir#7436) feat(ci): Release noir-inspector in binaries (noir-lang/noir#7464) chore(docs): Noir Profiler external documentation (noir-lang/noir#7457) feat(ci): Publish binaries for noir-profiler (noir-lang/noir#7443) chore: Copy #7387 docs into v1.0.0-beta.2 versioned_docs (noir-lang/noir#7458) fix: prevent incorrect ACIRgen caused by noop truncations (noir-lang/noir#7456) feat: add native `u128` type (noir-lang/noir#7301) chore: standardize that doc comments on top of statements and expression are allowed but warn (noir-lang/noir#7450) fix: don't let nargo fmt produce multiple trailing newlines (noir-lang/noir#7444)
fix: don't panic when shifting too much (noir-lang/noir#7429) chore: bump external pinned commits (noir-lang/noir#7472) chore: remove `disable_macros` compile option (noir-lang/noir#7468) chore(ci): add workflow to automate bumping aztec-packages commit (noir-lang/noir#7465) chore: Release Noir(1.0.0-beta.3) (noir-lang/noir#7346) chore(ci): Missing dash in profiler command argument (noir-lang/noir#7467) feat(experimental): show macro errors where they happen (noir-lang/noir#7333) feat: optimize FieldElement::num_bits (noir-lang/noir#7147) chore(profiler): Docs on profiler command and more complete error reporting (noir-lang/noir#7436) feat(ci): Release noir-inspector in binaries (noir-lang/noir#7464) chore(docs): Noir Profiler external documentation (noir-lang/noir#7457) feat(ci): Publish binaries for noir-profiler (noir-lang/noir#7443) chore: Copy #7387 docs into v1.0.0-beta.2 versioned_docs (noir-lang/noir#7458) fix: prevent incorrect ACIRgen caused by noop truncations (noir-lang/noir#7456) feat: add native `u128` type (noir-lang/noir#7301) chore: standardize that doc comments on top of statements and expression are allowed but warn (noir-lang/noir#7450) fix: don't let nargo fmt produce multiple trailing newlines (noir-lang/noir#7444)
fix: don't panic when shifting too much (noir-lang/noir#7429) chore: bump external pinned commits (noir-lang/noir#7472) chore: remove `disable_macros` compile option (noir-lang/noir#7468) chore(ci): add workflow to automate bumping aztec-packages commit (noir-lang/noir#7465) chore: Release Noir(1.0.0-beta.3) (noir-lang/noir#7346) chore(ci): Missing dash in profiler command argument (noir-lang/noir#7467) feat(experimental): show macro errors where they happen (noir-lang/noir#7333) feat: optimize FieldElement::num_bits (noir-lang/noir#7147) chore(profiler): Docs on profiler command and more complete error reporting (noir-lang/noir#7436) feat(ci): Release noir-inspector in binaries (noir-lang/noir#7464) chore(docs): Noir Profiler external documentation (noir-lang/noir#7457) feat(ci): Publish binaries for noir-profiler (noir-lang/noir#7443) chore: Copy #7387 docs into v1.0.0-beta.2 versioned_docs (noir-lang/noir#7458) fix: prevent incorrect ACIRgen caused by noop truncations (noir-lang/noir#7456) feat: add native `u128` type (noir-lang/noir#7301) chore: standardize that doc comments on top of statements and expression are allowed but warn (noir-lang/noir#7450) fix: don't let nargo fmt produce multiple trailing newlines (noir-lang/noir#7444)
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE feat: Sync from aztec-packages (noir-lang/noir#7474) fix: don't panic when shifting too much (noir-lang/noir#7429) chore: bump external pinned commits (noir-lang/noir#7472) chore: remove `disable_macros` compile option (noir-lang/noir#7468) chore(ci): add workflow to automate bumping aztec-packages commit (noir-lang/noir#7465) chore: Release Noir(1.0.0-beta.3) (noir-lang/noir#7346) chore(ci): Missing dash in profiler command argument (noir-lang/noir#7467) feat(experimental): show macro errors where they happen (noir-lang/noir#7333) feat: optimize FieldElement::num_bits (noir-lang/noir#7147) chore(profiler): Docs on profiler command and more complete error reporting (noir-lang/noir#7436) feat(ci): Release noir-inspector in binaries (noir-lang/noir#7464) chore(docs): Noir Profiler external documentation (noir-lang/noir#7457) feat(ci): Publish binaries for noir-profiler (noir-lang/noir#7443) chore: Copy #7387 docs into v1.0.0-beta.2 versioned_docs (noir-lang/noir#7458) fix: prevent incorrect ACIRgen caused by noop truncations (noir-lang/noir#7456) feat: add native `u128` type (noir-lang/noir#7301) chore: standardize that doc comments on top of statements and expression are allowed but warn (noir-lang/noir#7450) fix: don't let nargo fmt produce multiple trailing newlines (noir-lang/noir#7444) END_COMMIT_OVERRIDE --------- Co-authored-by: Tom French <tom@tomfren.ch>
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE feat: Sync from aztec-packages (noir-lang/noir#7474) fix: don't panic when shifting too much (noir-lang/noir#7429) chore: bump external pinned commits (noir-lang/noir#7472) chore: remove `disable_macros` compile option (noir-lang/noir#7468) chore(ci): add workflow to automate bumping aztec-packages commit (noir-lang/noir#7465) chore: Release Noir(1.0.0-beta.3) (noir-lang/noir#7346) chore(ci): Missing dash in profiler command argument (noir-lang/noir#7467) feat(experimental): show macro errors where they happen (noir-lang/noir#7333) feat: optimize FieldElement::num_bits (noir-lang/noir#7147) chore(profiler): Docs on profiler command and more complete error reporting (noir-lang/noir#7436) feat(ci): Release noir-inspector in binaries (noir-lang/noir#7464) chore(docs): Noir Profiler external documentation (noir-lang/noir#7457) feat(ci): Publish binaries for noir-profiler (noir-lang/noir#7443) chore: Copy #7387 docs into v1.0.0-beta.2 versioned_docs (noir-lang/noir#7458) fix: prevent incorrect ACIRgen caused by noop truncations (noir-lang/noir#7456) feat: add native `u128` type (noir-lang/noir#7301) chore: standardize that doc comments on top of statements and expression are allowed but warn (noir-lang/noir#7450) fix: don't let nargo fmt produce multiple trailing newlines (noir-lang/noir#7444) END_COMMIT_OVERRIDE --------- Co-authored-by: Tom French <tom@tomfren.ch>
Description
Problem
No issue. While sampling a compilation it landed on
FieldElement::num_bitsso I was wondering if optimizing it would have any visible effect.Summary
Before this PR
num_bitswould allocate the bytes inVec, now I think there would be no allocations.I didn't try it locally but it was a simple optimization so trying it here to see what CI says.
Additional Context
Documentation
Check one:
PR Checklist
cargo fmton default settings.