wiki:SMOOTH_TEXT_RENDERING_R0

Version 12 (modified by vlado, 16 years ago) (diff)

--

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

Error: Macro TicketQuery(summary=SMOOTH_TEXT_RENDERING_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 purpose of this task is to improve text rendering in terms of time performance.
  • Main focus
    • Improve the text layout itself
    • Improve how and when text layout is used (when the text is reflowed, etc.)
  • LayoutBuilderTest is used to measure the time of laying out text that exactly fills a frame with standard size (width: 280p, height: 210p).
    • Test runs in around 0.656 seconds.

Task requirements

  • Improve layout performance with 40%.
  • Test should run in around 0.4 seconds.

Task result

  • The result of this task is code

Implementation idea

  • Ratings of performance improvement solutions:
    • Hardness: 1(easiest) - 4(hardest)
    • Expected effectiveness: 4(smallest) - 1(biggest)
  • Rated possibilities to improve the layout algorithm:
    • Improve logging - (hardness)1 + (effectiveness)2 = (cumulative)3
    • Implement the issues commented as "performance" - 2 + 3 = 5
    • Improve badness calculation - 3 + 3 = 6
    • Refactor badness - 4 + 3 = 7
    • Memoization (part of a path, edge, etc.) - 4 + 1 = 5
    • Check for existing useless updates and reflowing (e.g. selecting the frame with highest z-order) - 2 + 3 = 5
    • Check for large ammounts of objects cloning - 2 + 3 = 5
  • During design and implementation handle the improvement possibilities in the order of the least cumulative rating.

WRAPPING_TEXT_RENDERING_R0

How to demo

Design

Implementation

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

Testing

Comments

(Write comments for this or later revisions here.)