Avoid expensive resizing in image/glyph atlases #7091
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.
I noticed that resizing images took a noticeable portion of the worker time. Turns out that we adjust the atlas size when adding every symbol, fully copying the contents each time it is resized. Instead, we can batch-pack an atlas and avoid resizing completely.
In an unscientific test browsing of a Streets map, this shaves off around 100ms of atlases creation (down from 18% to 12% of
maybePrepare
), and the garbage collector also seems to take around 100ms less time (in a profile where all worker work takes around 3s).Launch Checklist
write tests for all new functionalitydocument any changes to public APIs