You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Micah Kornfield (Jira)" <ji...@apache.org> on 2019/09/18 06:02:00 UTC

[jira] [Updated] (ARROW-6595) [Java] Avro - Experiment consumer compilation.

     [ https://issues.apache.org/jira/browse/ARROW-6595?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Micah Kornfield updated ARROW-6595:
-----------------------------------
    Description: 
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.

 

  was:
Avro supports some logical types that overlap with Arrow logical types ([http://avro.apache.org/docs/current/spec.html#Logical+Types) |http://avro.apache.org/docs/current/spec.html#Logical+Types]

 

For the ones that overlap, we should use the appropriate Arrow Logical type array instead of the raw values.

 

it potentially makes sense to break this down further into sub-tasks for each logical type.

 


> [Java] Avro - Experiment consumer compilation.
> ----------------------------------------------
>
>                 Key: ARROW-6595
>                 URL: https://issues.apache.org/jira/browse/ARROW-6595
>             Project: Apache Arrow
>          Issue Type: Sub-task
>          Components: Java
>            Reporter: Micah Kornfield
>            Assignee: Ji Liu
>            Priority: Major
>              Labels: avro
>
> 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.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)