Denis Zharkov
5e449fdc02
Optimize control-flow analysis by use of persistent maps
...
The case that it's worth to optimize is functions
with a lot of variables.
After debugging it's recovered that control-flow works nearly
O(n * m) where n is pseudocode size and m is a number of variables:
the algorithm performs O(n) copies of hashmap of size O(m)
Persistent maps should help because we don't need to perform a
copy of them, so the expected performance after the change is applied
is O(n log m)
We've tried pcollections and javaslang, and the latter one has demonstrated
better results
See results before and after optimizations
before:
https://github.com/dzharkov/kotlin-compiler-benchmarks/blob/3da7ba45a704969653d70b50995f730e968540d8/reports/benchmarks-many-vars-2017-03-14.txt
after with pcollections:
https://github.com/dzharkov/kotlin-compiler-benchmarks/blob/3da7ba45a704969653d70b50995f730e968540d8/reports/benchmarks-many-vars-persistent-optimizations-2017-03-17.txt
after with javaslang:
https://github.com/dzharkov/kotlin-compiler-benchmarks/blob/d22a871b175b291fb337b51ef6465ba70bbfd96c/reports/benchmarks-many-vars-javaslang-2017-04-07.txt
2017-04-11 11:26:11 +03:00
Alexander Udalov
5ebee6ceca
Use Java 8 lambdas instead of anonymous classes in compiler modules
2017-04-03 14:49:23 +03:00
Alexander Udalov
34f0576135
Invoke "remove unnecessary final" intention in compiler modules
2017-04-03 14:26:52 +03:00
Mikhail Glukhikh
52c3fb03a2
ControlFlowInfo introduced to store variable states, related refactoring
2015-12-26 10:46:30 +03:00
Mikhail Glukhikh
0f3997c6ca
InitState / VariableUseState / VariableControlFlowState moved to a separate file
2015-12-26 10:46:25 +03:00
Mikhail Glukhikh
726cbe3755
Refactoring: VariableInitState --> VariableControlFlowState
2015-09-02 12:07:21 +03:00
Alexander Udalov
48b18f18d3
Restore explicit imports of Kotlin function types in Java
...
This is a follow-up to 738a84e259 and
d4965a4f3e . Optimize imports in all files
affected in those commits, drop temporary _.kt
2015-05-26 18:46:27 +03:00
Alexander Udalov
738a84e259
Temporary hack to migrate functions to package kotlin.jvm.functions
...
Add a file in package 'kotlin.jvm.functions' to the project and replace
explicit imports of functions 'kotlin.Function{n}' to two imports 'kotlin.*'
and 'kotlin.jvm.functions.*', so that the codebase can be compiled both by the
old and by the new compiler
2015-05-26 15:04:34 +03:00
Alexander Udalov
587a92717c
Update copyright in frontend (cfg), tests
2015-01-12 15:40:16 +03:00
Alexander Udalov
64c6055030
Rename jet -> kotlin in frontend, descriptors: resolve
...
org.jetbrains.jet.lang.resolve -> org.jetbrains.kotlin.resolve
2015-01-11 05:09:01 +03:00
Alexander Udalov
524fdc2527
Rename jet -> kotlin in descriptors, types, names
...
org.jetbrains.jet.lang.descriptors -> org.jetbrains.kotlin.descriptors
org.jetbrains.jet.lang.types -> org.jetbrains.kotlin.types
org.jetbrains.jet.lang.resolve.name -> org.jetbrains.kotlin.name
2015-01-10 15:52:20 +03:00
Alexander Udalov
378d04e301
Rename jet -> kotlin in frontend: cfg
...
org.jetbrains.jet.lang.cfg, org.jetbrains.jet.cfg -> org.jetbrains.kotlin.cfg
2015-01-10 15:52:06 +03:00