-
Notifications
You must be signed in to change notification settings - Fork 5.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Avoid creating a vector when constructing Dart typed data objects for platform messages #18838
Conversation
… platform messages PlatformMessageResponseDart creates an external typed data object to hold the contents of large platform messages such as loaded assets. The implementation was using a std::vector to hold the message data extracted from an fml::Mapping. The vector is initialized during construction, which is unnecessary given that the data will be immediately overwritten. This change centralizes creation of these typed data objects into Tonic's DartByteData::Create. DartByteData::Create will allocate an external typed data based on a malloc buffer if the size exceeds a threshold. Fixes flutter/flutter#58572
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. |
We first add some PlatformMessageResponseDartComplete related benchmarks to test flutter#18838. Specifically, BM_PlatformMessageResponseDartCompleteOuter should improve from ~8897 us to ~1944 us after that PR on my MacBook Pro.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Let's land this after #18945 to have some benchmark numbers before and after this PR?
We first add a PlatformMessageResponseDartComplete benchmark to test flutter#18838. Specifically, it improves from ~7600 us to ~1200 us after that PR on my MacBook Pro.
We first add a PlatformMessageResponseDartComplete benchmark to test flutter#18838. Specifically, it improves from ~7600 us to ~1200 us after that PR on my MacBook Pro.
We first add a PlatformMessageResponseDartComplete benchmark to test flutter#18838. Specifically, it improves from ~7600 us to ~1200 us after that PR on my MacBook Pro.
We first add a PlatformMessageResponseDartComplete benchmark to test flutter#18838. Specifically, it improves from ~7600 us to ~1200 us after that PR on my MacBook Pro.
@jason-simmons @liyuqian Is this PR ready to merge? |
…ects for platform messages (flutter/engine#18838)
…ects for platform messages (flutter/engine#18838)
…ects for platform messages (flutter/engine#18838)
PlatformMessageResponseDart creates an external typed data object to
hold the contents of large platform messages such as loaded assets.
The implementation was using a std::vector to hold the message data
extracted from an fml::Mapping. The vector is initialized during
construction, which is unnecessary given that the data will be
immediately overwritten.
This change centralizes creation of these typed data objects into
Tonic's DartByteData::Create. DartByteData::Create will allocate an
external typed data based on a malloc buffer if the size exceeds a
threshold.
Fixes flutter/flutter#58572