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

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 commented Jul 25, 2019

No significant bundle size changes to report.

Generated by 🚫 dangerJS

@facebook-github-bot
Copy link

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

图片

Looks like safari's native Object.is is a disaster

@ku8ar
Copy link
Contributor Author

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 commented Aug 12, 2019

@acdlite hi! What do you think?

@ku8ar
Copy link
Contributor Author

ku8ar commented Sep 17, 2019

Is there anybody out there?
@gaearon @trueadm

Copy link
Contributor

@trueadm trueadm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks fine to me. Thanks for this contribution!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants