[Webkit-unassigned] [Bug 46374] [Chromium] FontLinux performance improvement and cleanup
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Fri Sep 24 17:39:48 PDT 2010
https://bugs.webkit.org/show_bug.cgi?id=46374
David Levin <levin at chromium.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #68789|review? |review+
Flag| |
--- Comment #10 from David Levin <levin at chromium.org> 2010-09-24 17:39:47 PST ---
(From update of attachment 68789)
View in context: https://bugs.webkit.org/attachment.cgi?id=68789&action=review
Please consider adjusting the ChangeLog.
> WebCore/ChangeLog:46
> + and new glyph arrays so the arrays in use are clean initially.
> + But it introduced more delete/new operation which might be a problem in
> + memory tight devices (such as Android device).
> +
> + This fix proposed to
> + 1. resume the setting of
> + m_item.num_glyphs = m_maxGlyphs before HB_ShapeItem() call to minimize
> + the number of delete/new operations
> + 2. always cleanup the glyph arrays before re-use them to make sure
> + the arrays in use are clean initially.
> +
> + Using http://www.google.ae/preferences?hl=ar as an example.
> +
> + Following is the change of m_item.num_glyphs after the call of HB_ShapeItem().
> +
> + 54 --> 5
> + 5 --> 1
> + 1 --> 8
> + .....
> +
> + The array is zero-ed initially (with size 54), so there is no problem
> + when shaping the first script run. After shaping, the m_item.num_glyphs
> + changed to 5.
>
> + Then, when shaping next script run, since there is enough space available
> + for HB_ShapeItem(), no deleteGlypyArrays/createGlyphArrays will be called,
> + but zero-ing array is not called either, so the next script run's
> + shaping is based on a dirty array. This is 2nd issue mentioned above that
> + the patch addresses.
> +
> + In the 3rd script run, although there is actually an array of size 54,
> + the recorded num_glyphs is 1, and it is less than the needed size, so,
> + array of size 54 is deleted and an array of size 8 is created.
> + The increase of num_glyphs from one run to its next is not uncommon.
> + It is hit 1096 times during loading the above example page. So the
> + delete/new will introduce extra overhead. This is the 1st issue mentioned
> + above that the patch addresses.
> +
This is a bit verbose.
How about this:
Reduce new/delete operations by storing the maximum capacity of the glyph array and use value that
in subsequent HB_ShapeItem calls. (Note that a call to HB_ShapeItem may reduce the value of m_item.num_glyphs
below the capacity.)
Also be consistent with zero'ing the glyph arrays before calling HB_ShapeItem.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list