Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[e4-dev] Makeing the compat layer perform

Hi,

I've been with a customer this week and we tried to get a really really
big form based application running on Mars M5a and while we could get
things up and running there've been subtle bugs and a big performance
loss on things like perspective switching when you have many many controls.

So let's start with the subtle things:
* Activities did not work when one used stack in the
  perspectiveExtension [released fixed with 460414]

* Publishing postselection events did work only after the part had been
  activated at least once [released fix with 460600]

* We never call WorkbenchWindowAdvisor#postWindowRestore which has been
  reported before already as 450541. A gerrit review is pending but I'd
  like Paul, Dani or wh ever thinks knows enough about this ares to
  review it https://git.eclipse.org/r/42423

Now let's get to the less subtle stuff causing stuff anyone will see on
first sight when running an 3.x application on 4.x. Performance degrades
to a point where the UI is unusable.

* Equinox freaks out when you have many bundles doing reexports. Pre
  Luna Equinox 2secs, Luna ~20secs for uncached starts, cached starts
  worked as before. We fixed that by removing the reexports who are a
  bad idea anyone agrees anyways.

* The CSS Engine is freaking out causing big performance regressions
  when there are many child controls. Just run the application on
  460840 to see what I mean

* We are sending bogus part-activations when switching perspective. I
  guess it's not only RCP application that get affected by this. The
  problem is reported as 460835 and we came up with a fix but this is a
  very critical thing and others need to look at it. See
  https://git.eclipse.org/r/42677

* platform code as well as SWT-CTabFolder do layouts like
  layout(true,true) on shells and parent containers at will causing a
  freaking number of unneeded layouts. We identified them as:
  - [Bug 460744] New: CTabFolder forces relayout on parent when tab is
    added

  - [Bug 460747] New: Perspective switching does not appropriately
    layout shared components with MinMaxAddon

  - [Bug 460748] Compatlayer code schedules layoutDeferred calls on
    main shell who result in a complete relayout on perspective switch

  where both of them make no real sense. It's unclear what problem
  460744 should solve, do we really want to relayout all siblings if a
  tabfolder gets a new item - in the eclipse perspectives this means
  you layout ALL currently visible tabfolders including ALL of their
  children containers (visible or not is not important - see 460745 for
  a request to fix this IMHO stupid behavior)

  The "winShell.layout(true, true);" in 460747 fixed for you (maybe
  with knowing it does it) the problem when you are switching
  perspectives and you need to reposition shared elements like the
  editor-area but the real fix getting us an unbelieveable performance
  boots on perspective switching is in the gerrit patch we provided as
  https://git.eclipse.org/r/42605

To summerize:
* 460414 fixed
* 460600 fixed
* 450541 - review pending
* 460840 - no idea how to fix, work around for 3.x apps ported is to
           run with -cssTheme none
* 460835 - review pending, might affect IDE as well, IMPORTANT FIX!
* 460744 - waiting for SWT to comment but curcial to get performance
           back to an acceptable level and the code IMHO makes no sense
           at all
* 460747 - review pending, might fix IDE problems, IMPORTANT FIX!
           because with only this fix we can get acceptable (not good)
           performance if even if SWT does not react
* 460748 - not sure we can get rid of these calls but given we can get
           460747 this does not cause as much problems as of today
* 460745 - generally speaking a nice to have because e.g. only the
           active child gets relayout when you resize the parent so why
           do you unconditionally layout all children?


Tom

-- 
Thomas Schindl, CTO
BestSolution.at EDV Systemhaus GmbH
Eduard-Bodem-Gasse 5-7, A-6020 Innsbruck
http://www.bestsolution.at/
Reg. Nr. FN 222302s am Firmenbuchgericht Innsbruck


Back to the top