apache / apache/arrow-java

[Java] Potentially inefficient variable-width vector reallocation

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

Beschreibung

In several places in the Java codebase you can see this kind of pattern:
```java

while (vector.getDataBuffer().capacity() < toCapacity) {
vector.reallocDataBuffer();
}
```

In the event that a much larger capacity is requested, this will spuriously make several reallocations (doubling the capacity each time).

It would probably be more efficient to reallocate directly to satisfy the desired capacity.

Coincidentally, there's a `reallocDataBuffer` overload that seems to do just that.

**Reporter**: [Antoine Pitrou](https://issues.apache.org/jira/browse/ARROW-17919) / @pitrou

**Note**: *This issue was originally created as [ARROW-17919](https://issues.apache.org/jira/browse/ARROW-17919). Please see the [migration documentation](https://github.com/apache/arrow/issues/14542) for further details.*

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, die Java-Aufrufstellen zu finden, die in einer Schleife über vector.getDataBuffer().capacity() laufen und reallocDataBuffer() aufrufen. Untersuche anschließend die Überladung von reallocDataBuffer, die eine gewünschte Kapazität akzeptiert. Aktualisiere die betroffenen Pfade so, dass eine angeforderte größere Kapazität direkt erfüllt wird, und stelle sicher, dass die relevanten Java-Tests das Reallokationsverhalten abdecken.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
performance
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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