-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Open
Labels
A-macromacro expansionmacro expansionA-perfperformance issuesperformance issuesE-has-instructionsIssue has some instructions and pointers to code to get startedIssue has some instructions and pointers to code to get startedS-actionableSomeone could pick this issue up and work on it right nowSomeone could pick this issue up and work on it right nowfunA technically challenging issue with high impactA technically challenging issue with high impactgood first issue
Description
Recently (#7513) we implemented a new NFA based expander for MBE which is quite slow compared to the old one (based on recursive descent). It would be nice if someone could optimize it to run as fast as possible.
Benchmark
We already have a benchmark for it, to run the benchmark :
$ RUN_SLOW_TESTS=1 cargo test --release --package mbe -- benchmark::benchmark_expand_macro_rules --nocapture
Output should be something like:
running 1 test
mbe expand macro rules: 2.21s, 8464minstr
test benchmark::benchmark_expand_macro_rules ... ok
Source
The corresponding source code of mbe expander is at :
And we have a bunch of compliance tests related to mbe, to run these test :
$ cargo test --package mbe -- --nocapture
Tips
By default, RA turn off the debug information in Cargo.toml
:
You may need to set it to debug = 2
And here is how I run perf
in linux:
$ RUN_SLOW_TESTS=1 perf record --call-graph dwarf cargo test --release --package mbe -- benchmark::benchmark_expand_macro_rules --nocapture
$ perf report --call-graph
[EDIT: added --release flag]
dzmitry-lahoda and CGMossadzmitry-lahoda and CGMossa
Metadata
Metadata
Assignees
Labels
A-macromacro expansionmacro expansionA-perfperformance issuesperformance issuesE-has-instructionsIssue has some instructions and pointers to code to get startedIssue has some instructions and pointers to code to get startedS-actionableSomeone could pick this issue up and work on it right nowSomeone could pick this issue up and work on it right nowfunA technically challenging issue with high impactA technically challenging issue with high impactgood first issue