[
https://issues.apache.org/jira/browse/HIVE-22962?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17050612#comment-17050612
]
Jesus Camacho Rodriguez commented on HIVE-22962:
------------------------------------------------
Latest patch includes a very simple benchmark {{FieldTrimmerBench}} that
applies the trimmer on a 10 operator plan repeatedly.
{noformat}
Benchmark Mode Cnt Score Error Units
FieldTrimmerBench.baseRelFieldTrimmer thrpt 10 0.088 ± 0.002 ops/us
FieldTrimmerBench.hiveRelFieldTrimmer thrpt 10 10.182 ± 0.117 ops/us
FieldTrimmerBench.modBaseRelFieldTrimmer thrpt 10 8.292 ± 0.138 ops/us
FieldTrimmerBench.baseRelFieldTrimmer avgt 10 10.548 ± 0.148 us/op
FieldTrimmerBench.hiveRelFieldTrimmer avgt 10 0.109 ± 0.001 us/op
FieldTrimmerBench.modBaseRelFieldTrimmer avgt 10 0.116 ± 0.002 us/op
{noformat}
- baseRelFieldTrimmer : Calcite implementation that instantiates trimmer on
every call and thus does not exploit method resolution caching. It uses
reflection.
- modBaseRelFieldTrimmer : Modified implementation that can use the same
trimmer instance and thus exploits method resolution caching. It uses
reflection.
- hiveRelFieldTrimmer : Modified implementation that can use the same trimmer
instance and thus exploits method resolution caching. It uses lambda
metafactory.
> Reuse HiveRelFieldTrimmer instance across queries
> -------------------------------------------------
>
> Key: HIVE-22962
> URL: https://issues.apache.org/jira/browse/HIVE-22962
> Project: Hive
> Issue Type: Improvement
> Components: CBO
> Reporter: Jesus Camacho Rodriguez
> Assignee: Jesus Camacho Rodriguez
> Priority: Major
> Attachments: HIVE-22962.01.patch, HIVE-22962.02.patch,
> HIVE-22962.patch
>
>
> Currently we create multiple {{HiveRelFieldTrimmer}} instances per query.
> {{HiveRelFieldTrimmer}} uses a method dispatcher that has a built-in caching
> mechanism: given a certain object, it stores the method that was called for
> the object class. However, by instantiating the trimmer multiple times per
> query and across queries, we create a new dispatcher with each instantiation,
> thus effectively removing the caching mechanism that is built within the
> dispatcher.
> This issue is to reutilize the same {{HiveRelFieldTrimmer}} instance within a
> single query and across queries.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)