-
Notifications
You must be signed in to change notification settings - Fork 995
Improve performance on EQ operation #9229
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
Conversation
macfarla
left a comment
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.
changelog entry?
78d0a1b to
821cc16
Compare
Signed-off-by: Luis Pinto <luis.pinto@consensys.net>
Signed-off-by: Luis Pinto <luis.pinto@consensys.net>
Signed-off-by: Luis Pinto <luis.pinto@consensys.net>
Signed-off-by: Luis Pinto <luis.pinto@consensys.net>
Signed-off-by: Luis Pinto <luis.pinto@consensys.net>
ahamlat
left a comment
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
| {"0x000001", "0x", Condition.NOT_EQUAL}, | ||
| {"0x000000", "0x", Condition.EQUAL}, | ||
| {"0x321312", "0x321312", Condition.EQUAL}, | ||
| {"0x321312", "0x0000321312", Condition.EQUAL}, |
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.
Could you add a test with something like
{"0x00321312", "0x03213120", Condition.NOT_EQUAL},
improves EQ performance by ~2x in some of the worst cases Signed-off-by: Ali Zhagparov <alijakparov.kz@gmail.com>
improves EQ performance by ~2x in some of the worst cases Signed-off-by: jflo <justin+github@florentine.us>
This is already a ~10 ns operation but this PR is set to improve a little bit more in the worse cases (leading zeros and long byte matches) by inlining algorithm from Tuweni directly in besu and levering intrinsics.

Results below:
Fixed Issue(s)
Thanks for sending a pull request! Have you done the following?
doc-change-requiredlabel to this PR if updates are required.Locally, you can run these tests to catch failures early:
./gradlew spotlessApply./gradlew build./gradlew acceptanceTest./gradlew integrationTest./gradlew ethereum:referenceTests:referenceTests