Ticket #2288 (closed bug: obsolete)

Opened 15 years ago

Last modified 13 years ago

general-performance

Reported by: kyli Owned by:
Priority: major Milestone:
Component: uncategorized Version: 2.0
Keywords: Cc:
Category: unknown Effort:
Importance: Ticket_group:
Estimated Number of Hours: 0 Add Hours to Ticket: 0
Billable?: yes Total Hours: 0
Analysis_owners: kyli Design_owners: kyli
Imp._owners: kyli Test_owners:
Analysis_reviewers: pap Changelog:
Design_reviewers: pap Imp._reviewers: pap, todor
Test_reviewers: Analysis_score: 3
Design_score: 3.5 Imp._score: 4
Test_score: 0

Description (last modified by pap) (diff)

Locate and fix various problems, related to overall Sophie2 performance:

  • The startup should be optimized;
  • Calls of BaseVisualElement.findNearestElement() should be limited, since it is quite slow method;
  • Skinning should be inspected for possible slow-downs;
  • ProLib updates are currently too much, try to minimize them.

Change History

comment:1 Changed 15 years ago by kyli

  • Status changed from new to s1b_analysis_finished

Locate and fix various problems, related to overall Sophie2 performance:

  • The startup should be optimized;
  • Calls of BaseVisualElement.findNearestElement() should be limited, since it is quite slow method;
  • Skinning should be inspected for possible slow-downs;
  • ProLib updates are currently too much, try to minimize them.

comment:2 Changed 15 years ago by kyli

  • Design_owners set to kyli
  • Status changed from s1b_analysis_finished to s2a_design_started

comment:3 Changed 15 years ago by kyli

  • Status changed from s2a_design_started to s3b_implementation_finished
  • Imp._owners set to kyli

Design

  • The most important requirement of this task is to make true startup faster. In AuthorModule, the runnable should not wait 15 seconds before startup. Instead, it will wait second by second until the BaseVisualModule recognizes a registered layout engine.
  • In the Skin class, the methods getvalue() and getValues() use same code for doing similar things. The dependencies from registered extensions could be reduced by using auto props - one for all the extensions, and one for their records. I could not determine the exact performance effect from this change, so I cannot decide how useful this is.
  • Calls of findNearestElement which are totally useless:
    • BookView.addPage();
    • EmbeddedBooksPalette.openBooksPalette();
    • ConnectionsPalette.initAccounts() - use findParentElement instead.
  • Also, ResourceDetailsPalette and PluginsAboutPalette use findNearestElement. Make a method getPalette(Class<? extends Palette>) in Tab. Then in these palettes, use getParent().getPalette(..). This can be achieved, because we know the needed palettes are in the same tab.
  • In ProListener add a method getSize(), which gives the count of the listened pro's. The listener in AutoTracker will return getListened().size(), all the other listener implementations could return 0 - their value is ignored.
  • BasePro.fireChanged(): Before calling changed() to all the listeners, put them in a set of listeners. If the listener is already there, do not call its changed() - obviously, another pro will call it later. The listeners should be notified in ascending order of their size - the more props it listens to, the later it will be notified. After performing all changed() methods, remove the listeners from the set. This patch seems to save up to 5% of the prop updates in some specific cases.
  • In HaloMenu, a prop which computes the currently visible bounds should be added. It can be used in AppMainWindow.haloSync, which causes less updates and less repaints.

Implementation

  • The implementation is done according the design in branches/private/kyli/2288.
  • In addidion to the task, I removed some AutoProps from the appearance hud. I doubt they have some performance effect, but they were so ugly :)

comment:4 Changed 15 years ago by pap

  • Description modified (diff)

comment:5 Changed 15 years ago by pap

  • Status changed from s3b_implementation_finished to s3c_implementation_ok
  • Analysis_reviewers set to pap
  • Analysis_score changed from 0 to 3
  • Imp._reviewers set to pap, todor
  • Design_score changed from 0 to 3.5
  • Design_reviewers set to pap
  • Imp._score changed from 0 to 4
  • Commited in [8615]
  • The unnecessary override of the parent property in AllResourcesPalette - we talked about that
  • Most of the things look quite nice as code. I like deleting unnecessary code.
  • Visibility of swings may be synchronized in BaseSwingVisualElement and not in BoundControl - you already saw that.

comment:6 Changed 13 years ago by meddle

  • Status changed from s3c_implementation_ok to closed
  • Resolution set to obsolete

Closing all the tickets before M Y1

Note: See TracTickets for help on using tickets.