Skip to content

Fix missing std:: prefix for PROFILE_OPTIMIZER_STEPS#15465

Merged
nikola-matic merged 1 commit intodevelopfrom
missing-std-prefix-in-performance-metrics
Sep 30, 2024
Merged

Fix missing std:: prefix for PROFILE_OPTIMIZER_STEPS#15465
nikola-matic merged 1 commit intodevelopfrom
missing-std-prefix-in-performance-metrics

Conversation

@cameel
Copy link
Collaborator

@cameel cameel commented Sep 30, 2024

Looks like the profiling we have for optimizer steps in Suite.cpp broke with the removalof using namespace std. This is a trivial fix to add the std:: prefix.

Note that we never build in CI with -DPROFILE_OPTIMIZER_STEPS, so CI will pass here regardless of whether it's broken or not.

@cameel cameel requested a review from nikola-matic September 30, 2024 09:54
@cameel cameel self-assigned this Sep 30, 2024
@cameel
Copy link
Collaborator Author

cameel commented Sep 30, 2024

The reason why I noticed it in the first place is that I wanted to see what is taking the most time in the optimizer now, especially on full projects. I think we only ever ran it on single contracts.

Here's what I got. This is on top of #15451, which is what we'll release as 0.8.28 soon.

Note that these are cumulative results over all contracts in a project. Normally the profiler prints the results separately for each contract, but I made m_durationPerStepInMicroseconds static in my local build to get cumulative results.

OpenZeppelin

Time (relative) Time (absolute) Step
20% 3.7 s CommonSubexpressionEliminator
9% 1.7 s UnusedAssignEliminator
9% 1.6 s UnusedPruner
9% 1.6 s ExpressionSimplifier
7% 1.3 s LiteralRematerialiser
7% 1.3 s FullInliner
5% 1.0 s ConditionalUnsimplifier
5% 0.9 s LoadResolver
5% 0.9 s DeadCodeEliminator
5% 0.8 s SSATransform
4% 0.7 s UnusedStoreEliminator
4% 0.7 s ConditionalSimplifier
3% 0.6 s LoopInvariantCodeMotion
2% 0.4 s FunctionSpecializer
1% 0.2 s EqualStoreEliminator
1% 0.2 s ExpressionSplitter

Uniswap

Time (relative) Time (absolute) Step
20% 12.3 s CommonSubexpressionEliminator
9% 5.8 s ExpressionSimplifier
9% 5.3 s UnusedAssignEliminator
8% 5.1 s UnusedPruner
8% 5.1 s LiteralRematerialiser
7% 4.2 s FullInliner
5% 3.0 s SSATransform
5% 3.0 s ConditionalUnsimplifier
4% 2.7 s DeadCodeEliminator
4% 2.7 s LoadResolver
4% 2.4 s UnusedStoreEliminator
4% 2.3 s ConditionalSimplifier
3% 1.8 s FunctionSpecializer
3% 1.7 s LoopInvariantCodeMotion
1% 0.6 s ExpressionSplitter

Eigenlayer

Time (absolute) Time (relative) Step
20% 52.3 s CommonSubexpressionEliminator
11% 29.2 s LiteralRematerialiser
9% 24.1 s ExpressionSimplifier
9% 23.6 s UnusedAssignEliminator
8% 20.5 s FullInliner
7% 18.4 s UnusedPruner
5% 13.7 s LoadResolver
5% 13.3 s SSATransform
4% 11.7 s UnusedStoreEliminator
4% 11.2 s ConditionalUnsimplifier
4% 10.3 s DeadCodeEliminator
3% 8.1 s ConditionalSimplifier
3% 7.3 s LoopInvariantCodeMotion
2% 3.9 s FunctionSpecializer

Comparison

Step OpenZeppelin Uniswap Eigenlayer
CommonSubexpressionEliminator 20% 20% 20%
LiteralRematerialiser 7% 8% 11%
UnusedAssignEliminator 9% 9% 9%
ExpressionSimplifier 9% 9% 9%
FullInliner 7% 7% 8%
UnusedPruner 9% 8% 7%
LoadResolver 5% 4% 5%
SSATransform 5% 5% 5%
ConditionalUnsimplifier 5% 5% 4%
DeadCodeEliminator 5% 4% 4%
UnusedStoreEliminator 4% 4% 4%
ConditionalSimplifier 4% 4% 3%
LoopInvariantCodeMotion 3% 3% 3%
FunctionSpecializer 2% 3% 2%
EqualStoreEliminator 1%
ExpressionSplitter 1% 1%

@cameel cameel force-pushed the missing-std-prefix-in-performance-metrics branch from 47b2f77 to 146e2bc Compare September 30, 2024 10:00
@nikola-matic nikola-matic merged commit 542f7a5 into develop Sep 30, 2024
@nikola-matic nikola-matic deleted the missing-std-prefix-in-performance-metrics branch September 30, 2024 10:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants