-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Open
Labels
Component: C++Status: stale-warningIssues and PRs flagged as stale which are due to be closed if no indication otherwiseIssues and PRs flagged as stale which are due to be closed if no indication otherwiseType: enhancement
Description
One of the things we want to be able to do in the streaming execution engine is process data in small L2 sized batches. Based on literature we might like to use batches somewhere in the range of 1k to 16k rows. In ARROW-16014 we created a benchmark to measure the performance of ExecuteScalarExpression as the size of our batches got smaller. There are two things we observed:
- Something is causing thread contention. We should be able to get pretty close to perfect linear speedup when we are evaluating scalar expressions and the batch size fits entirely into L2. We are not seeing that.
- The overhead of ExecuteScalarExpression is too high when processing small batches. Even when the expression is doing real work (e.g. copies, comparisons) the execution time starts to be dominated by overhead when we have 10k sized batches.
Reporter: Weston Pace / @westonpace
Subtasks:
- [C++] Overhead of std::shared_ptr copies is causing thread contention
- [C++] Avoid copying shared_ptr in Expression::type()
- [C++] Avoid slicing array inputs in ExecBatchIterator that would result in one slice
- [C++] Implementation of ExecuteScalarExpressionOverhead benchmarks without arrow for comparision
Original Issue Attachments:
Note: This issue was originally created as ARROW-16138. Please see the migration documentation for further details.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Component: C++Status: stale-warningIssues and PRs flagged as stale which are due to be closed if no indication otherwiseIssues and PRs flagged as stale which are due to be closed if no indication otherwiseType: enhancement