[ 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)