You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Improve vectorized operations of GroupColumn #13275
But unfortunately seems no obvious improvement in clickbench, tpch and so on... although some improvement can see in benchmark for the function in #13539
For take + eq, use eq in arrow kernel indeed can get performance improve, but the cost of take seems unacceptable...
For optimizations for special case of input array (like all rows in the array needed, no nulls although it is nullable), it can see some improvement in the benchmark for function, but see no improvement in e2e benchmark(clickbench, tpch). I guess they may be not the hot path...
But unfortunately seems no obvious improvement in clickbench, tpch and so on... although some improvement can see in benchmark for the function in #13539
For take + eq, use eq in arrow kernel indeed can get performance improve, but the cost of take seems unacceptable...
For optimizations for special case of input array (like all rows in the array needed, no nulls although it is nullable), it can see some improvement in the benchmark for function, but see no improvement in e2e benchmark(clickbench, tpch). I guess they may be not the hot path...
Thanks @Rachelint for summarizing, that's interesting. One big difference between take + eq in join versus grouped aggregates seems to be that the ValueBuilders already are type erased, so maybe there is nothing to gain (and using take and eq just creates an extra copy.
It seems for the join code, this could actually be used more (and joining on string columns might be not so fast at the moment).
Thanks @Rachelint for summarizing, that's interesting. One big difference between take + eq in join versus grouped aggregates seems to be that the ValueBuilders already are type erased, so maybe there is nothing to gain (and using take and eq just creates an extra copy.
It seems for the join code, this could actually be used more (and joining on string columns might be not so fast at the moment).
🤔 I think maybe we can indeed try some solutions without take in join? @LeslieKid seems trying it.
🤔 I think maybe we can indeed try some solutions without take in join? @LeslieKid seems trying it.
Yes, I am working on comparing arrays with indices in a for-loop (similar to the implementation of vectorized_equal_to() in multi group-by) instead of using take in hash join. See #13607
Activity
Rachelint commentedon Nov 28, 2024
I tried the possible optimizations for
vectorized_equal_to:#12996 (comment)
#12996 (comment)
But unfortunately seems no obvious improvement in clickbench, tpch and so on... although some improvement can see in benchmark for the function in #13539
For
take + eq, useeqin arrow kernel indeed can get performance improve, but the cost oftakeseems unacceptable...For optimizations for special case of
input array(likeall rows in the array needed,no nulls although it is nullable), it can see some improvement in the benchmark for function, but see no improvement in e2e benchmark(clickbench, tpch). I guess they may be not the hot path...I plan to not make further attempts recently...
cc @Dandandan @alamb @jayzhan211
Rachelint commentedon Nov 28, 2024
@LeslieKid maybe you can try it if some other possible optimizations not included above.
Dandandan commentedon Nov 29, 2024
Thanks @Rachelint for summarizing, that's interesting. One big difference between
take+eqin join versus grouped aggregates seems to be that theValueBuilders already are type erased, so maybe there is nothing to gain (and usingtakeandeqjust creates an extra copy.It seems for the join code, this could actually be used more (and joining on string columns might be not so fast at the moment).
Rachelint commentedon Nov 29, 2024
🤔 I think maybe we can indeed try some solutions without
takein join? @LeslieKid seems trying it.Dandandan commentedon Nov 29, 2024
Yeah som experiments around that would be nice.
Also see this issue:
#12131
Dandandan commentedon Nov 29, 2024
Oh I saw @LeslieKid already commented on that issue 👍
LeslieKid commentedon Nov 29, 2024
Yes, I am working on comparing arrays with indices in a for-loop (similar to the implementation of
vectorized_equal_to()in multi group-by) instead of usingtakein hash join. See #13607