Quality and Performance Kotlin 1.4 in IntelliJ IDEs Anton - - PowerPoint PPT Presentation

quality and performance kotlin 1 4 in intellij ides anton
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

Kotlin 1.4 Online Event October 12, 2020 @anton_yalyshev

Quality and Performance – Kotlin 1.4 in IntelliJ IDEs Anton Yalyshev

slide-2
SLIDE 2
slide-3
SLIDE 3
slide-4
SLIDE 4

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%

slide-5
SLIDE 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%

slide-6
SLIDE 6

The most important devX components

  • Smooth typing
  • IDE responsiveness
  • Code completion
  • Code highlighting
  • Navigation and Find Usages
  • Indexing
slide-7
SLIDE 7

1.3.60

IDE Performance:

  • Smooth typing
  • IDE responsiveness
  • Code completion
  • Code highlighting
  • Navigation and

Find Usages

  • Indexing
slide-8
SLIDE 8

1.3.60 Fast completion

IDE Performance:

  • Smooth typing
  • IDE responsiveness
  • Code completion
  • Code highlighting
  • Navigation and

Find Usages

  • Indexing

0200 ms 0% 40% 20% 200500 ms 5001000 ms 1000 ms 60% 58.4% 34.0% 5.7% 1.8% 1.3.60

Percents of Users who have such Average Completion Time

slide-9
SLIDE 9

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

0200 ms 0% 40% 20% 200500 ms 5001000 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

slide-10
SLIDE 10

Perception of response times

  • 100200 ms: instant
  • 5001000 ms: immediate
  • 25 sec: keeps attention
  • 710 sec: keeps context
slide-11
SLIDE 11

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
slide-12
SLIDE 12

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

slide-13
SLIDE 13

Average completion times experienced by users in .gradle.kts

0500 ms 5001000 ms 10001500 ms 1500 ms 50% 0% 40% 30% 20% 10% 1.3.60 1.3.70

slide-14
SLIDE 14

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% 01 sec 15 sec 510 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

slide-15
SLIDE 15

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

slide-16
SLIDE 16

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

slide-17
SLIDE 17

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
slide-18
SLIDE 18

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

slide-19
SLIDE 19
slide-20
SLIDE 20
slide-21
SLIDE 21

Quality

  • Reducing plugin exceptions 1.52 times with each release
  • Stability of the Debugger, Formatter, Move Refactoring and more
  • Debugger for coroutines
slide-22
SLIDE 22

New Project Wizard

slide-23
SLIDE 23

Light editing

slide-24
SLIDE 24

IntelliJ LightEdit mode

slide-25
SLIDE 25

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

slide-26
SLIDE 26

One important announcement

slide-27
SLIDE 27
slide-28
SLIDE 28

IntelliJ IDEA and Kotlin are getting closer

Kotlin repository IJ plugin IntelliJ platform repository

slide-29
SLIDE 29

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
slide-30
SLIDE 30

Thanks! Have a nice Kotlin

@anton_yalyshev