Slide 1

Slide 1 text

MAKE BIG THINGS
 RUN AGAIN! Karsten Thoms - itemis AG INSIGHTS ON ECLIPSE PLATFORM PERFORMANCE TUNINGS

Slide 2

Slide 2 text

About • Since 2003 @itemis • Background with Enterprise Applications • Specialised in Language Engineering, Code Generation, Toolchain Development, DevOps • Eclipse Committer since 10 years • Open Source / Eclipse Evangelist @kthoms @itemis @yourkit #performance @jcon_conference https://github.com/kthoms

Slide 3

Slide 3 text

xxxxxxxxxxxx When you wait for your IDE

Slide 4

Slide 4 text

https://www.flickr.com/photos/bagogames/24707027581
 "The Flash: "Fast Lane" Review - Face Punching Galore“. © BagoGames under CC BY 2.0 SPEED !

Slide 5

Slide 5 text

Where performance matters • Startup Time • UI Responsiveness • Project Build • p2 (Software Install / Update) • Operations on large data sets • Memory Consumption • Garbage Collection …

Slide 6

Slide 6 text

Also small improvements matter

Slide 7

Slide 7 text

If something is slower than expected… Start a Profiler and measure your use case !

Slide 8

Slide 8 text

@jcon_conference @yourkit #performance @kthoms @itemis WHAT YOU’LL SEE

Slide 9

Slide 9 text

Performance work 
 in Photon & 2018-09

Slide 10

Slide 10 text

Search Tree Expansion

Slide 11

Slide 11 text

Search Tree Expansion

Slide 12

Slide 12 text

Startup Time Fedora Linux

Slide 13

Slide 13 text

Single Thread Build

Slide 14

Slide 14 text

Parallel Project Build

Slide 15

Slide 15 text

Parallel Project Build

Slide 16

Slide 16 text

macOS SWT Event Dispatching

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Import Projects from Git Repository

Slide 21

Slide 21 text

Throttler API

Slide 22

Slide 22 text

Throttler API

Slide 23

Slide 23 text

Fixed UI Freezes • Bug#539470: Opening package in the Project Explorer in hierarchical presentation mode • Bug#533230: EGit Repositories view blocks Eclipse on startup • Bug#533198: EGit Branch name page on large repositories • Bug#520069: Suppress label recalculation in tree viewers on filter change Thanks to @bananeweizen

Slide 24

Slide 24 text

String#replaceAll

Slide 25

Slide 25 text

https://bugs.eclipse.org/bugs/show_bug.cgi?id=532072

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Check for Updates https://bugs.eclipse.org/bugs/show_bug.cgi?id=532190

Slide 30

Slide 30 text

Avoid Exceptions as Return Value https://bugs.eclipse.org/bugs/show_bug.cgi?id=522103

Slide 31

Slide 31 text

Avoid Exceptions as Return Value

Slide 32

Slide 32 text

Avoid Exceptions as Return Value WhitespaceCharacterPainter#drawLineRange ----------------------------------------- Time #IAE Before 4959ms 10763 After 3384ms 0

Slide 33

Slide 33 text

Memory Profiling

Slide 34

Slide 34 text

Zero Length Arrays https://bugs.eclipse.org/bugs/show_bug.cgi?id=532545

Slide 35

Slide 35 text

Zero Length Arrays

Slide 36

Slide 36 text

Zero Length Arrays https://bugs.eclipse.org/bugs/show_bug.cgi?id=532364

Slide 37

Slide 37 text

Zero Length Arrays https://bugs.eclipse.org/bugs/show_bug.cgi?id=532364

Slide 38

Slide 38 text

Optimize Data Structures https://bugs.eclipse.org/bugs/show_bug.cgi?id=519085

Slide 39

Slide 39 text

Optimize Data Structures https://bugs.eclipse.org/bugs/show_bug.cgi?id=519085

Slide 40

Slide 40 text

Optimize Data Structures https://bugs.eclipse.org/bugs/show_bug.cgi?id=519085

Slide 41

Slide 41 text

ClasspathAccessRule

Slide 42

Slide 42 text

https://bugs.eclipse.org/bugs/show_bug.cgi?id=532505

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

With introduced Cache

Slide 45

Slide 45 text

but…

Slide 46

Slide 46 text

Regression :( https://bugs.eclipse.org/bugs/show_bug.cgi?id=536990 Delivered with Photon Fixed in 2018-09

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

Performance Tests

Slide 50

Slide 50 text

Performance Tests

Slide 51

Slide 51 text

Challenges • Code must be backward compatible => No API change • Makes usage of new concurrent patterns hard to impossible
 => Blocks multi-threading and non-blocking processes • SWT: Native skills

Slide 52

Slide 52 text

Slow scrolling on macOS https://bugs.eclipse.org/bugs/show_bug.cgi?id=366471

Slide 53

Slide 53 text

Slow scrolling on macOS

Slide 54

Slide 54 text

Text Search with many fast results https://bugs.eclipse.org/bugs/show_bug.cgi?id=535752

Slide 55

Slide 55 text

Processing in UI Thread

Slide 56

Slide 56 text

Still many freezes

Slide 57

Slide 57 text

Java Project Wizard

Slide 58

Slide 58 text

Java Project Wizard http://eclip.se/eY

Slide 59

Slide 59 text

Startup Time

Slide 60

Slide 60 text

Challenges • Preserving API Compatibility • Makes usage of new concurrent patterns hard to impossible
 => Blocks multi-threading and non-blocking processes • SWT: Deep Native knowledge required • Regressions

Slide 61

Slide 61 text

Every small improvement in platform is saving time, money and nerves for millions of developers every day

Slide 62

Slide 62 text

We need your help! https://pixabay.com/de/usa-uncle-sam-i-want-you-armee-49909/