Andrey showed that the IDE was much faster now to ...
# intellij
j
Andrey showed that the IDE was much faster now to provide completions. I am very interested on how this performance improvement was reached as I am experimenting with the (incremental) compiler. Can any of the developer who worked on this link a few commits that allowed such improvements ? Thanks a lot 🙂
a
p
@jdemeulenaere in what version should I expect this improvement? I am not seeing anything getting faster. Actually it's quite the opposite. It's not just completion. The error analysis, code highlighting, typing, copy-pasting.. pretty much everything involving Kotlin lags the whole IDE for 5+ seconds, sometimes minutes (not joking). In the meantime Java works perfectly fine, snappy as always.
j
@alexey.tsvetkov thanks! Are those the main ones or are there many others ? I am asking that because I am building a DSL-specific editor which uses the compiler to analyze the files. I mainly use infos from the
BindingContext
and calls to
KotlinType.xxxxScope.getContributedContributors
to provide the completions. At first sight I would say that I might automatically get speed improvements for the second link you gave, but not the first one, right ? Thanks 🙂
s
сс @Vladimir Dolzhenko @Alexander Podkhalyuzin [JB]
v
@jdemeulenaere there are many others but those two gave the most noticable difference; another biggest part is so called ultra light classes, those turned on by default in 1.3.60 - in 1.3.50 they were available but default was just light classes
@poohbar 1.3.70 most probably will get many improvements: incremental analysis https://youtrack.jetbrains.com/issue/KT-32868 (mostly done), copy-paste https://youtrack.jetbrains.com/issue/KT-33939 is planned and a series of other small improvements (esp. regarding some freezes)
p
@Vladimir Dolzhenko 🙏 Can't wait.
👍 1
b
@poohbar: I still have slowdowns, but 2019.3 clearly improved the speed quite a lot. That copy bug is really annoying though… I can't wait for that to be fixed.
v
@jdemeulenaere regarding the 1st commit: it is the most noticable on kts files (while it gives some perf improvement to kt files too) - I guess it could be noticable in case of dsl case too
j
Thanks a lot for your responses and awesome work ! 🙂
👍 1
n
What are ultra light classes?
v
@napperley Some internal machinery: in short - instead of fully compile kt code into java (for the sake of interop) we do produce some kind of wrappers (classes, methods, properties w/o bodies) - that's light classes. Ultra light classes are even lighter as do not involve backend compiler and uses front-end part of it.
👍 1