-
Notifications
You must be signed in to change notification settings - Fork 6k
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
Profiler probes for non-sequence steps #15518
Conversation
Here's how it looks in benchmarks. The tables show the timing of the added probes (in italics), with total optimization time and top 3 steps included for comparison. Looks like it's closer to 15%. I assumed 33% based on the fact that for Uniswap I used to see ~60 s of optimization time and now that's up to ~80 s, but apparently this run was just particularly slow. The impact of OpenZeppelinCompilation time: 33 s.
UniswapCompilation time: 130 s.
EigenlayerCompilation time: 556 s.
|
NameSimplifier::run(suite.m_context, astRoot); | ||
{ | ||
PROFILER_PROBE("NameSimplifier", probe); | ||
NameSimplifier::run(suite.m_context, astRoot); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder why we're running NameSimplifier
twice. It has been that way ever since it was added in #9591. I don't see any specific justification for this in that PR though.
Removing it could shave off 2-3% of the optimizer running time.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was thinking that perhaps it yields nicer names in some cases, but at least for our test suite it doesn't even change anything.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice. You could submit that as a PR then. We should run it by Daniel just to make sure there wasn't any obscure reason he's aware of but if it's having no effect, we should really get rid of it. It's too expensive to run it without a good reason.
I realized that the only steps covered by our profiler are the ones that go through
runSequence()
.Disambiguator
,NameSimplifier
,StackCompressor
,StackLimitEvader
,NameSimplifier
,VarNameCleaner
are not included, which undercounts the actual impact of the optimizer by quite a bit (33% in case of Uniswap). This PR adds probes for these elements.