Codechange: Improve LineCache queries #9417
Merged
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.
Motivation / Problem
After #9416, one major source of temporary allocations is
GetCachedParagraphLayout
.The key of the
std::map
contains astd::string
, while the cache access uses aconst char* + size
.The current version constructs the key to query the linecache, which needs to allocate and copy the string for each query.
With C++14, some queries of
std::map
allow to query using a different type than key using a transparent comparator.Description
This PR adds the support to query the linecache without copying the string.
Building pieces are:
std::string_view
After this PR and #9416, the allocations are dominated by the SpriteSorter.
Limitations
none
Checklist for review
Some things are not automated, and forgotten often. This list is a reminder for the reviewers.