apache / apache/arrow-java

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

Offen
#599 9 Kommentare 3 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
help wanted Type: enhancement
Vorherrschende Sprache
Java
Sterne
94
Forks
152
Ø Merge
3 T. 16 Std.
Gemergte PRs (30 T.)
11

Beschreibung

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)

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit fillHoles() im Pfad zur Erweiterung des Lesepuffers und prüfe das im Issue beschriebene Profiler-Bild sowie den Kontext des Benchmarks mit 300 Spalten. Vergleiche das aktuelle Füllen Element für Element mit einem Bulk-Ansatz unter Verwendung derselben Workload; abgeschlossen bedeutet eine gemessene Schlussfolgerung zur Performance-Frage und eine gezielte Änderung nur dann, wenn der Vergleich sie unterstützt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
performance
Issue-Typ
Refactoring
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.