Kotlin 1.4 Online Event October 12, 2020 @anton_yalyshev
Quality and Performance Kotlin 1.4 in IntelliJ IDEs Anton - - PowerPoint PPT Presentation
Quality and Performance Kotlin 1.4 in IntelliJ IDEs Anton - - PowerPoint PPT Presentation
Kotlin 1.4 Online Event Quality and Performance Kotlin 1.4 in IntelliJ IDEs Anton Yalyshev @anton_yalyshev October 12, 2020 Activities and events Indexing 28% 5% Overall lost time Build 16% VCS events 3% VFS refresh 4% Project
Activities and events
Indexing Build VCS events VFS refresh Project import UI lags 28% 16% 3% 4% 18% 31%
Active session 95% Overall lost time 5%
Activities and events
Indexing Build VCS events VFS refresh Project import UI lags 28% 16% 3% 4% 18% 31%
Project import 18% UI lags 31% Indexing 28% Build 16% VCS events 3% VFS refresh 4%
The most important devX components
- Smooth typing
- IDE responsiveness
- Code completion
- Code highlighting
- Navigation and Find Usages
- Indexing
1.3.60
IDE Performance:
- Smooth typing
- IDE responsiveness
- Code completion
- Code highlighting
- Navigation and
Find Usages
- Indexing
1.3.60 Fast completion
IDE Performance:
- Smooth typing
- IDE responsiveness
- Code completion
- Code highlighting
- Navigation and
Find Usages
- Indexing
0200 ms 0% 40% 20% 200500 ms 5001000 ms 1000 ms 60% 58.4% 34.0% 5.7% 1.8% 1.3.60
Percents of Users who have such Average Completion Time
1.3.60 Fast completion 1.3.70 Faster Completion
IDE Performance:
- Smooth typing
- IDE responsiveness
- Code completion
- Code highlighting
- Navigation and
Find Usages
- Indexing
0200 ms 0% 40% 20% 200500 ms 5001000 ms 1000 ms 80% 60% 58.4% 70.3% 34.0% 25.1% 5.7% 3.2% 1.8%
Percents of Users who have such Average Completion Time
1.3% 1.3.60 1.3.70
Perception of response times
- 100200 ms: instant
- 5001000 ms: immediate
- 25 sec: keeps attention
- 710 sec: keeps context
IDE Performance:
- Smooth typing
- IDE responsiveness
- Code completion
- Code highlighting
- Navigation and
Find Usages
- Indexing
1.3.60 Fast completion 1.3.70 Faster completion
- inc. caches
1.3.60 Fast completion 1.3.70 Faster completion
- inc. caches
J/K interop
IDE Performance:
- Smooth typing
- IDE responsiveness
- Code completion
- Code highlighting
- Navigation and
Find Usages
- Indexing
.kt .java
Average completion times experienced by users in .gradle.kts
0500 ms 5001000 ms 10001500 ms 1500 ms 50% 0% 40% 30% 20% 10% 1.3.60 1.3.70
1.3.60 Fast completion 1.3.70 Faster completion
- inc. caches
J/K interop IJ 2020.1 Highlighting algorithm
IDE Performance:
- Smooth typing
- Responsiveness
- Code completion
- Code highlighting
- Navigation and
Find Usages
- Indexing
1.4% 40% 20% 60%
First-time file highlighting times in a large project
Previous Current 0% 80% 01 sec 15 sec 510 sec 10 sec 74.3% 59.5% 29.6% 20.3% 3.3% 3.9% 7.3%
Test Framework: github.com/JetBrains/kotlin/tree/master/idea/performanceTests
18% 31% Project import UI lags Indexing 28% Build 16% VCS events 3% VFS refresh 4%
IDE Performance:
- Smooth typing
- Responsiveness
- Code completion
- Code highlighting
- Navigation and
Find Usages
- Indexing
1.3.60 Fast completion 1.3.70 Faster completion
- inc. caches
J/K interop IJ 2020.1 Highlighting algorithm IJ 2020.2
1.3.60 Fast completion 1.3.70 Faster completion
- inc. caches
J/K interop IJ 2020.1 Highlighting algorithm IJ 2020.2 Shared Indexes
IDE Performance:
- Smooth typing
- Responsiveness
- Code completion
- Code highlighting
- Navigation and
Find Usages
- Indexing
How to: jetbrains.com/help/idea/shared-indexes.html
1.3.60 Fast completion 1.3.70 Faster completion
- inc. caches
J/K interop IJ 2020.1 Highlighting algorithm IJ 2020.2 Shared Indexes 1.4 Fixed lots of: Freezes Deadlocks Memory/CPU cons.
IDE Performance:
- Smooth typing
- Responsiveness
- Code completion
- Code highlighting
- Navigation and
Find Usages
- Indexing
1.3.60 Fast completion 1.3.70 Faster completion
- inc. caches
J/K interop IJ 2020.1 Highlighting algorithm IJ 2020.2 Shared Indexes 1.4 Fixed lots of: Freezes Deadlocks Memory/CPU cons.
IDE Performance:
- Smooth typing
- Responsiveness
- Code completion
- Code highlighting
- Navigation and
Find Usages
- Indexing
1. Issue tracker: kotl.in/issue 2. Attach diagnostic info: jb.gg/ij-perf-reporting 3. Tell us what you were doing at the time
Quality
- Reducing plugin exceptions 1.52 times with each release
- Stability of the Debugger, Formatter, Move Refactoring and more
- Debugger for coroutines
New Project Wizard
Light editing
IntelliJ LightEdit mode
What’s next?
- Continue investing in the speed of:
○ Code completion and highlighting ○ Navigation and Find Usages
- IDE stability and quality of features
- Cross-language inline and change signature refactorings
in Java/Kotlin mixed projects
- Integration with the new Compiler Frontend
Our roadmap: https://kotl.in/roadmap
One important announcement
IntelliJ IDEA and Kotlin are getting closer
Kotlin repository IJ plugin IntelliJ platform repository
IntelliJ and Kotlin are getting closer
- Better tooling parity
- Single release cycle for Kotlin plugin and IntelliJ IDEA
- More opportunities for contribution
- Amplifies IntelliJ Kotlin plugin development
Thanks! Have a nice Kotlin
@anton_yalyshev