-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Speedup arithmetic kernels (up to -25%) / not (-30%) #7457
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
Closed
Closed
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
ca81704
Speedup arith
Dandandan c31011c
Speedup arith scalar
Dandandan 9afc940
Speedup arith
Dandandan 609b625
Merge remote-tracking branch 'upstream/main' into speedup_arith
Dandandan 675239e
Speedup arith
Dandandan 5cc033e
Speedup arith
Dandandan f556fa6
Speedup arith
Dandandan 3f5f977
Speedup bitwise_unary_op_helper
Dandandan 7be4bc0
Add back safety note
Dandandan 55cb9bb
Add back safety note
Dandandan File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
is this an API change?
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.
Good question 🤔, I believe it isn't?
I think it was bounded by primitive arrays (via
ArrowPrimitiveTypealready?I.e. you can not use it for a binary or boolean arrays.
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.
I think this is a breaking change, you could use this with any array provided the output was primitive
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.
Hm yeah, you are right!
Are we willing to make this change given that no test seems to break and other methods seem to be on
PrimitiveArrayinstead (unary, unary_mut, try_unary, try_unary_mut, binary, etc. are on Primitive array)?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.
I think it would be a non-trivial functionality regression, even if in arrow-rs we aren't exploiting it - I could see this being useful for processing primitive dictionaries, for example.
Uh oh!
There was an error while loading. Please reload this page.
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.
FWIW: I checked for DataFusion, here it is also only used (1 usage) for a primitive array.
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.
Can we go back to the previous definition? I suspect you had a good reason for doing it this way, but I don't understand what it is
If we need to retain backward compatibility and want to release this before July, I recommend adding a new method called
try_binary_primitiveand add a link in the documentation fortry_binarysaying it is faster for primitive arrays to use that new functionThere 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.
We can do that, but it seems not possible to have a safe api without regressing (because we need
TrustedLen)