Performance improvements of individual Yul Optimizer steps
- Dominant language
- C++
- Stars
- 25.7k
- Forks
- 6.2k
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 29
Description
A catch-all issue for the specific ideas for performance improvement in individual optimizer steps + a place to post profiling results and discuss them.
- [x] FullInliner's [`BodyCopier`](https://github.com/ethereum/solidity/blob/v0.8.28/libyul/optimiser/FullInliner.h#L158-L178) takes ~60% of inliner's running time.
- [x] Are [two passes](https://github.com/ethereum/solidity/blob/v0.8.28/libyul/optimiser/FullInliner.cpp#L50-L51) of FullInliner necessary?
- [x] Oversized time impact of UnusedPruner
- [ ] CSE and DataflowAnalyzer slowness
Contributor guide
Research direction
Start with the profiling notes for FullInliner::BodyCopier and the two FullInliner passes in libyul/optimiser/FullInliner.h and FullInliner.cpp. Then investigate the unresolved CSE and DataflowAnalyzer slowness; done means a specific performance improvement is identified and supported by profiling results.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers, performance
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100