On Thu, 5 Dec 2024 20:27:16 GMT, Daniel Gredler <[email protected]> wrote:
>> When `LineBreakMeasurer` is used to break text into lines, internally it >> uses `TextMeasurer` and `TextLine` to do the job. In the common case, >> `TextLine.getComponents(...)` allocates a `TextLineComponent[]` with room >> for a single array entry, and passes it to >> `TextLine.createComponentsOnRun(...)`, which fills the array and returns it, >> optionally resizing to a larger array if necessary, after which the array is >> resized back down to actual size (if necessary). >> >> Unfortunately `TextLine.createComponentsOnRun(...)` is too eager in >> allocating larger arrays. In the most common case of a single component, >> this means that a single-element array is allocated, then a 9-element array >> is allocated (via `expandArray(...)`), and then another single-element array >> is allocated (to shrink the array back to actual size). Only one array >> allocation is necessary in this common case, and no array copying is needed. > > Daniel Gredler has updated the pull request incrementally with one additional > commit since the last revision: > > Update copyright year @gredler Your change (at version 557a3b18f100b9b0302c2bdd2ad1ca6d73533b6a) is now ready to be sponsored by a Committer. ------------- PR Comment: https://git.openjdk.org/jdk/pull/22288#issuecomment-2521650827
