apache / apache/arrow-java

Performance concern: fillHoles() method and read buffer expansion efficiency.

Open
#599 9 comments 3 reactions 0 assignees View on GitHub
help wanted Type: enhancement
Dominant language
Java
Stars
94
Forks
152
Avg merge
3d 16h
Merged PRs (30d)
11

Description

Hi everyone,

I have the following use case: I’m benchmarking the read throughput performance when dealing with a large number of non-dictionary string columns (300 columns). Based on the profiler output (see the attached picture), I’ve noticed that a significant amount of time is spent in the fillHoles() method, which is part of the read buffer expansion process.

My question is: why is the buffer filled one element at a time instead of using a bulk operation? Wouldn’t a batch approach be more efficient?

Looking forward to your insights. Thanks!

![Image](https://github.com/user-attachments/assets/57108c7a-126d-4370-9a01-4f0aa85218d9)

Contributor guide

Open the contributing guide

Research direction

Start with fillHoles() in the read buffer expansion path and review the profiler image and 300-column benchmark context described in the issue. Compare the current element-by-element filling with a bulk approach using the same workload; done means a measured conclusion about the performance concern and a focused change only if the comparison supports it.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
performance
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.