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)