[
https://issues.apache.org/jira/browse/ARROW-16716?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17546060#comment-17546060
]
Ivan Chau edited comment on ARROW-16716 at 6/3/22 3:53 PM:
-----------------------------------------------------------
Hi [~westonpace], it's nice to meet you!
I've got a first draft of the benchmarks and have some clarification questions
for you!
I am working on pushing the code soon, but the current benchmark right now is
processing 1e6 elements with varying batch size. The pipeline includes a source
node, a projection node which contains a field_ref and an expression (we carry
over the same expressions used in ExecuteScalarExpressionOverhead and vary them
per run), and then a basic sink (no agg or ordering).
I am currently using rows_per_second to measure performance, and I have found
that they are not exactly the same as the ExecuteScalarExpressionOverhead,
although the relative performance (comparing complex_expression vs
simple_expression for a 2x speedup, for example), is very similar. This other
overhead could be from the other `field_ref` operation I have in the
projection, or the source/sink portions (I am not sure how hefty these are).
Here are some of my follow-ups as I tune these benchmarks:
* How do we isolate and find the performance of _only_ the project node rather
than source/project/sink
* How to measure the data rate, since it seems we are measuring in rows /
batches.
* I saw some examples of controlling the threads used in
ExecuteScalarExpressionOverhead, how can we control threads per core?
Thank you! I will have the code up shortly.
[^out]
^[^out_expression]^
was (Author: JIRAUSER290345):
Hi [~westonpace], it's nice to meet you!
I've got a first draft of the benchmarks and have some clarification questions
for you!
I am working on pushing the code soon, but the current benchmark right now is
processing 1e6 elements with varying batch size. The pipeline includes a source
node, a projection node which contains a field_ref and an expression (we carry
over the same expressions used in ExecuteScalarExpressionOverhead and vary them
per run), and then a basic sink (no agg or ordering).
I am currently using rows_per_second to measure performance, and I have found
that they are not exactly the same as the ExecuteScalarExpressionOverhead,
although the relative performance (comparing simple_expression vs
complex_expression for a 2x speedup, for example), is very similar. This other
overhead could be from the other `field_ref` operation I have in the
projection, or the source/sink portions (I am not sure how hefty these are).
Here are some of my follow-ups as I tune these benchmarks:
* How do we isolate and find the performance of _only_ the project node rather
than source/project/sink
* How to measure the data rate, since it seems we are measuring in rows /
batches.
* I saw some examples of controlling the threads used in
ExecuteScalarExpressionOverhead, how can we control threads per core?
Thank you! I will have the code up shortly.
[^out]
^[^out_expression]^
> [Benchmarks] Create Projection benchmark for Acero
> --------------------------------------------------
>
> Key: ARROW-16716
> URL: https://issues.apache.org/jira/browse/ARROW-16716
> Project: Apache Arrow
> Issue Type: Improvement
> Components: Benchmarking
> Reporter: Li Jin
> Priority: Major
> Attachments: out, out_expression
>
>
--
This message was sent by Atlassian Jira
(v8.20.7#820007)