-
Notifications
You must be signed in to change notification settings - Fork 71
Optimize TypedValue.Compare for value reflector #153
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 TypedValue.Compare for value reflector #153
Conversation
e794a6f to
1a53920
Compare
|
/assign @apelisse |
|
Thanks @apelisse! Feedback applied. |
|
Maybe squash and then we're good. |
d6641ff to
719dc37
Compare
|
squashed |
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: apelisse, jpbetz The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
valueReflect uses 65% less CPU and 85% less allocations that valueUnstructured for ConvertToTyped, but for TypedValue.Compare it performs much worse:
BEFORE:
baseline: TypedValue.Compare using valueUnstructured
test variant: TypedValue.Compare using valueReflect
This optimizes valueReflect for TypedValue.Compare by:
With these changes, valueReflect still underperforms valueUnstructured (except for endpoints, where it really shines), but is is considerably closer.
AFTER:
For the portion of the Update changed by introducing server side apply, where ConvertToTyped and TypedValue.Compare are called in series, the net gain is still a substantial win, with ~52% less CPU and 60% less allocations.