Skip to content
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

Merged
merged 1 commit into from
Jun 18, 2020

Conversation

jason-simmons
Copy link
Member

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

… 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
@fluttergithubbot
Copy link
Contributor

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.

@auto-assign auto-assign bot requested a review from gw280 June 4, 2020 23:41
@liyuqian liyuqian added perf: speed Performance issues related to (mostly rendering) speed severe: performance Relates to speed or footprint issues. labels Jun 8, 2020
liyuqian added a commit to liyuqian/engine that referenced this pull request Jun 9, 2020
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.
@liyuqian liyuqian mentioned this pull request Jun 9, 2020
Copy link
Contributor

@liyuqian liyuqian left a 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?

liyuqian added a commit to liyuqian/engine that referenced this pull request Jun 10, 2020
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.
liyuqian added a commit to liyuqian/engine that referenced this pull request Jun 10, 2020
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.
liyuqian added a commit to liyuqian/engine that referenced this pull request Jun 10, 2020
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.
liyuqian added a commit to liyuqian/engine that referenced this pull request Jun 10, 2020
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.
@zanderso
Copy link
Member

@jason-simmons @liyuqian Is this PR ready to merge?

@jason-simmons jason-simmons added the waiting for tree to go green This PR is approved and tested, but waiting for the tree to be green to land. label Jun 18, 2020
@fluttergithubbot fluttergithubbot merged commit 9fcfec3 into flutter:master Jun 18, 2020
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jun 18, 2020
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jun 18, 2020
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jun 18, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla: yes perf: speed Performance issues related to (mostly rendering) speed severe: performance Relates to speed or footprint issues. waiting for tree to go green This PR is approved and tested, but waiting for the tree to be green to land.
Projects
None yet
5 participants