apache / apache/arrow-java

[Java] Avro - Experiment with "compiled" consumer delegates for performance.

Offen
#280 1 Kommentar 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
94
Forks
152
Ø Merge
3 T. 16 Std.
Gemergte PRs (30 T.)
11

Beschreibung

All consumers that rely on delegates (e.g. struct, composite, list, union, ...) require  megamorphic lookups which can't be inlined well by JIT.  

 

We should verify the performance different of a hand-coded consumer vs an existing delegate consumer

 

i.e. something like:

 

void consume(Decoder d) {

  ((IntConsumer)delegate).consume(d);

}

 

compared to the existing implementation.  It is expected we will see a decent amount of performance improvement from this approach.  If we do, we should add an option to converter to generate new custom classes on the fly, that mimic the hand-coded option.

 

**Reporter**: [Micah Kornfield](https://issues.apache.org/jira/browse/ARROW-6595) / @emkornfield

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, die im Issue beschriebenen delegate-basierten Consumer und den von Hand codierten Consumer-Pfad zu lokalisieren. Vergleiche ihre Performance und beurteile anschließend, ob von einem Converter generierte benutzerdefinierte Klassen gerechtfertigt sind; abgeschlossen ist die Aufgabe mit einem dokumentierten Vergleich und einer abgegrenzten Implementierungsentscheidung.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
backend, performance
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

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