Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Make Big Things Run Again! Insights on Eclipse Platform Performance Tunings (EclipseCon 2018)

Make Big Things Run Again! Insights on Eclipse Platform Performance Tunings (EclipseCon 2018)

E76754f592fecf0116c53b2bc39ff135?s=128

Karsten Thoms

October 25, 2018
Tweet

Transcript

  1. MAKE BIG THINGS
 RUN AGAIN! Karsten Thoms - itemis AG

    INSIGHTS ON ECLIPSE PLATFORM PERFORMANCE TUNINGS
  2. 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
  3. xxxxxxxxxxxx When you wait for your IDE

  4. https://www.flickr.com/photos/bagogames/24707027581
 "The Flash: "Fast Lane" Review - Face Punching Galore“.

    © BagoGames under CC BY 2.0 SPEED !
  5. Where performance matters • Startup Time • UI Responsiveness •

    Project Build • p2 (Software Install / Update) • Operations on large data sets • Memory Consumption • Garbage Collection …
  6. Also small improvements matter

  7. If something is slower than expected… Start a Profiler and

    measure your use case !
  8. @jcon_conference @yourkit #performance @kthoms @itemis WHAT YOU’LL SEE

  9. Performance work 
 in Photon & 2018-09

  10. Search Tree Expansion

  11. Search Tree Expansion

  12. Startup Time Fedora Linux

  13. Single Thread Build

  14. Parallel Project Build

  15. Parallel Project Build

  16. macOS SWT Event Dispatching

  17. None
  18. None
  19. None
  20. Import Projects from Git Repository

  21. Throttler API

  22. Throttler API

  23. 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
  24. String#replaceAll

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

  26. None
  27. None
  28. None
  29. Check for Updates https://bugs.eclipse.org/bugs/show_bug.cgi?id=532190

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

  31. Avoid Exceptions as Return Value

  32. Avoid Exceptions as Return Value WhitespaceCharacterPainter#drawLineRange ----------------------------------------- Time #IAE Before

    4959ms 10763 After 3384ms 0
  33. Memory Profiling

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

  35. Zero Length Arrays

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

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

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

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

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

  41. ClasspathAccessRule

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

  43. None
  44. With introduced Cache

  45. but…

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

  47. None
  48. None
  49. Performance Tests

  50. Performance Tests

  51. 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
  52. Slow scrolling on macOS https://bugs.eclipse.org/bugs/show_bug.cgi?id=366471

  53. Slow scrolling on macOS

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

  55. Processing in UI Thread

  56. Still many freezes

  57. Java Project Wizard

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

  59. Startup Time

  60. 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
  61. Every small improvement in platform is saving time, money and

    nerves for millions of developers every day
  62. We need your help! https://pixabay.com/de/usa-uncle-sam-i-want-you-armee-49909/