[[BackLinksMenu]] [[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|)]] = 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. == Related == [wiki:NFR_PREVIEW_PERFORMANCE_R0] [[BR]] [wiki: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.)