argotorg / argotorg/solidity

Performance improvements of individual Yul Optimizer steps

Open
#15,508 4 comments 0 reactions 0 assignees View on GitHub
high effort high impact optimizer performance :racehorse: selected for development
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.