This repository was archived by the owner on Feb 25, 2025. It is now read-only.
libtxt: Clone an ICU line break iterator for each Paragraph/WordBreaker#22594
Merged
fluttergithubbot merged 1 commit intoflutter:masterfrom Nov 20, 2020
Merged
Conversation
|
It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact Hixie on the #hackers channel in Chat. Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. |
875c914 to
5c743ee
Compare
chinmaygarde
approved these changes
Nov 20, 2020
| // by constructing a global iterator using the default locale and then | ||
| // creating a clone for each WordBreaker instance. | ||
| std::once_flag gLibtxtBreakIteratorInitFlag; | ||
| icu::BreakIterator* gLibtxtBreakIterator = nullptr; |
Contributor
There was a problem hiding this comment.
Maybe gLibtxtDefaultBreakIterator
The recent roll to ICU 18.1 introduced some expensive data conversion during rule-based break iterator construction. Each instance of Libtxt's Paragraph class creates a Minikin LineBreaker/WordBreaker which in turn creates an ICU break iterator. The increased cost of calling icu::BreakIterator::createLineInstance caused regressions on several Flutter benchmarks. Libtxt always uses the ICU default locale for break iterators. This change calls icu::BreakIterator::createLineInstance once to create a global instance with the default locale and then calls icu::BreakIterator::clone to create copies for each paragraph. Fixes flutter/flutter#70623 Fixes flutter/flutter#70700
5c743ee to
783887b
Compare
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/flutter
that referenced
this pull request
Nov 24, 2020
chaselatta
pushed a commit
to chaselatta/engine
that referenced
this pull request
Nov 30, 2020
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The recent roll to ICU 18.1 introduced some expensive data conversion
during rule-based break iterator construction. Each instance of
Libtxt's Paragraph class creates a Minikin LineBreaker/WordBreaker
which in turn creates an ICU break iterator. The increased cost of
calling icu::BreakIterator::createLineInstance caused regressions
on several Flutter benchmarks.
Libtxt always uses the ICU default locale for break iterators. This
change calls icu::BreakIterator::createLineInstance once to create
a global instance with the default locale and then calls
icu::BreakIterator::clone to create copies for each paragraph.
Fixes flutter/flutter#70623
Fixes flutter/flutter#70700