fix performance problem in bootstrapping #4
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
So EscapeAnalysis.jl has a serious performance problem, which appears
only in bootstrapping.
I made some inspections using the following
print
debug:... and it seems like the performance of
find_escapes!
will be reallyawful when there is a large number of statements, say,
nstmts > 100
.The worse case I confirmed so far happens when analyzing
construct_ssa!(::CodeInfo, ::IRCode, ::DomTree, ::Any, ::Vector{Any})
,where I got the print
analyzing... Core.Const(val=Core.Compiler.construct_ssa!) 182 4262
,and it took more than 100 sec on my machine (!!!).
Note that
find_escapes!
works on after-inlining IR, so we often suchmany statements.
The interesting property is, this performance problem seems really
specific to bootstrapping. I confirmed that
find_escapes!
runs in0.34 sec when I enabled it later using Revise.