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

Optimize objectIs #16212

Merged
merged 4 commits into from Sep 17, 2019
Merged

Optimize objectIs #16212

merged 4 commits into from Sep 17, 2019

Conversation

@ku8ar
Copy link
Contributor

@ku8ar ku8ar commented Jul 25, 2019

Native Object.is implementation is much faster than polyfill.

https://jsperf.com/object-is-vs-polyfill/1

https://jsperf.com/object-is-vs-polyfill-better/1

Zrzut ekranu 2019-07-25 o 22 43 15

Native Object.is implementation is much faster than polyfill.
@facebook-github-bot
Copy link

@facebook-github-bot facebook-github-bot commented Jul 25, 2019

Thank you for your pull request and welcome to our community. We require contributors to sign our Contributor License Agreement, and we don't seem to have you on file. In order for us to review and merge your code, please sign up at https://code.facebook.com/cla. If you are contributing on behalf of someone else (eg your employer), the individual CLA may not be sufficient and your employer may need the corporate CLA signed.

If you have received this in error or have any questions, please contact us at cla@fb.com. Thanks!

@sizebot
Copy link

@sizebot sizebot commented Jul 25, 2019

No significant bundle size changes to report.

Generated by 🚫 dangerJS

ku8ar added 2 commits Jul 25, 2019
@facebook-github-bot
Copy link

@facebook-github-bot facebook-github-bot commented Jul 25, 2019

Thank you for signing our Contributor License Agreement. We can now accept your code for this (and any) Facebook open source project. Thanks!

@intellild
Copy link

@intellild intellild commented Aug 7, 2019

图片

Looks like safari's native Object.is is a disaster
@ku8ar
Copy link
Contributor Author

@ku8ar ku8ar commented Aug 9, 2019

@probablyup @intellil OK, I know why so weak. I wrote the wrong test. Safari is very slow when reading the value of the Object object.

I have improved test and it is much better:
https://jsperf.com/object-is-vs-polyfill-better/1

Zrzut ekranu 2019-08-9 o 19 17 07

No difference on Safari and Firefox, but a great improvement on Chrome.
Probably the good Chrome result is due to some micro-optimization, during which Blink remembers the Object.is result when it gets the same values. But for React this means an advantage, because in most cases rerender is with same properties.

@ku8ar
Copy link
Contributor Author

@ku8ar ku8ar commented Aug 12, 2019

@acdlite hi! What do you think?

@ku8ar
Copy link
Contributor Author

@ku8ar ku8ar commented Sep 17, 2019

Is there anybody out there?
@gaearon @trueadm

Copy link
Member

@trueadm trueadm left a comment

This looks fine to me. Thanks for this contribution!

@trueadm trueadm merged commit d862f0e into facebook:master Sep 17, 2019
12 checks passed
12 checks passed
ci/circleci: build Your tests passed on CircleCI!
Details
ci/circleci: flow Your tests passed on CircleCI!
Details
ci/circleci: lint Your tests passed on CircleCI!
Details
ci/circleci: lint_build Your tests passed on CircleCI!
Details
ci/circleci: process_artifacts Your tests passed on CircleCI!
Details
ci/circleci: setup Your tests passed on CircleCI!
Details
ci/circleci: test_build Your tests passed on CircleCI!
Details
ci/circleci: test_build_prod Your tests passed on CircleCI!
Details
ci/circleci: test_dom_fixtures Your tests passed on CircleCI!
Details
ci/circleci: test_source Your tests passed on CircleCI!
Details
ci/circleci: test_source_persistent Your tests passed on CircleCI!
Details
ci/circleci: test_source_prod Your tests passed on CircleCI!
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

5 participants
You can’t perform that action at this time.