wiki:NFR_GENERAL_PERFORMANCE_R0

Version 1 (modified by kyli, 16 years ago) (diff)

--

Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Error: Macro TicketQuery(summary=NFR_GENERAL_PERFORMANCE_R0, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|) failed
current transaction is aborted, commands ignored until end of transaction block

Analysis

Overview

The general performance of Sophie2 is not good enough. These operations are considered slow:

  • Editing the text of a frame / chain;
  • Moving, resizing, rotating a frame;
  • Changing the z-order;
  • Opening a large book from a file;
  • Opening book preview (even of an empty book);

Task requirements

We believe that these slow-downs are caused by too much updating pro objects. The following requirements should solve most of the performance problems:

  • Minimize the number of updates of automatic properties. Currently, if prop C reads prop B and A, and prop B reads prop A, changing the prop A will cause 2 updates of prop C.
  • A halo menu and its children should not compute anything if it's not visible. The current version of Sophie without halo menus is much faster and this means that halos perform lots of computations even if not used.

Task result

Better performance of the application in general.

Implementation idea

  • In order to make the visibility requirement, VisualElements need to know about their visibility. This means adding a new prop to the interface.
  • The pro lib could use a queue for performing updates of props. It also needs a better algorithm to compute the best possible order of updating.

NFR_PREVIEW_PERFORMANCE_R0
NFR_TEXT_PERFORMANCE_R0

How to demo

Start a previous and the current versions of sophie, compare the speed of the above mentioned operations in both applications.

Design

(Describe your design here.)

Implementation

(Describe and link the implementation results here (from the wiki or the repository).)

Testing

(Place the testing results here.)

Comments

(Write comments for this or later revisions here.)