| 1 | [[BackLinksMenu]] |
| 2 | |
| 3 | [[TicketQuery(summary=NFR_TEXT_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|)]] |
| 4 | |
| 5 | = Analysis = |
| 6 | |
| 7 | == Overview == |
| 8 | Operations over text are currently very slow. These include: |
| 9 | * Operations with text frames (with some text in it, not empty) - rotate, move, zOrder change, insert, delete, resize, etc. |
| 10 | * Pasting of large text resources in text frames (10000 words, for example) as well as writing in frames with large texts. These are both modification of the text resource. |
| 11 | * All the above mentioned operations over chained frames are even slower. |
| 12 | * Auto-chaining is extremely slow. |
| 13 | * Saving / loading a book with large texts. |
| 14 | * A large quantity of small text resources (for example, 100 pages with text frames in them, each of them having a page of text). |
| 15 | |
| 16 | == Task requirements == |
| 17 | * Make creation of a text layout faster. Currently it does not re-use previous layouts. It even has a lots of unneccessary calculations in it which slows down the layout a lot (Hint: createLineBreakMeasurer()). |
| 18 | * Make auto chaining process faster. It will certainly become much faster with introducing the layout reusage, but the algorithm of auto chaining is not quite effective anyway. |
| 19 | * Inspect and try to optimize the overall performance with lots of text resources. Currently, a book with 100 pages of text (even not chained) in titally unusable. |
| 20 | |
| 21 | == Task result == |
| 22 | Significantly faster operations (modify, rotate, resize, reflow, move, and others) over normal and chained text. Fast auto-chaining process. |
| 23 | |
| 24 | == Implementation idea == |
| 25 | After a prototypical optimizaitons in layout re-usage, it was noticed that chaining of 100 pages of text is still slow. The reason (this time) was not in the layout, but in the creation of the 100th page with the 100th frame in it. This took about 2 seconds on my computer, which is dozens of times slower than the first frame. So, this task should not only solve layout problems. |
| 26 | |
| 27 | == Related == |
| 28 | [wiki:NFR_PREVIEW_PERFORMANCE_R0] |
| 29 | |
| 30 | == How to demo == |
| 31 | Start Sophie, insert a text frame with the page size, paste the first half of "Под игото" by Ivan Vazov and try to auto-chain it.This should be about 150 frames of chained text. If it performs considerably fast, save the book and re-open it in a new instance of Sophie. |
| 32 | |
| 33 | = Design = |
| 34 | ^(Describe your design here.)^ |
| 35 | |
| 36 | = Implementation = |
| 37 | ^(Describe and link the implementation results here (from the wiki or the repository).)^ |
| 38 | |
| 39 | = Testing = |
| 40 | ^(Place the testing results here.)^ |
| 41 | |
| 42 | = Comments = |
| 43 | ^(Write comments for this or later revisions here.) |