You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "shuifeng lu (JIRA)" <ji...@apache.org> on 2018/09/26 03:22:00 UTC
[jira] [Updated] (DRILL-6763) Codegen optimization of SQL functions
with constant values
[ https://issues.apache.org/jira/browse/DRILL-6763?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
shuifeng lu updated DRILL-6763:
-------------------------------
Summary: Codegen optimization of SQL functions with constant values (was: Codegen optimiztion of SQL functions with constant values)
> Codegen optimization of SQL functions with constant values
> ----------------------------------------------------------
>
> Key: DRILL-6763
> URL: https://issues.apache.org/jira/browse/DRILL-6763
> Project: Apache Drill
> Issue Type: Improvement
> Components: Execution - Codegen
> Affects Versions: 1.14.0
> Reporter: shuifeng lu
> Assignee: shuifeng lu
> Priority: Critical
> Attachments: Query1.java, Query2.java, code_compare.png, compilation_time.png
>
>
> Codegen class compilation takes tens to hundreds of milliseconds, a class cache is hit when generifiedCode of code generator is exactly the same.
> It works fine when UDF only takes columns or symbols, but not efficient when one or more parameters in UDF is always distinct from the other.
> Take face recognition for example, the face images are almost distinct from each other according to lighting, facial expressions and details.
> It is important to reduce redundant class compilation especially for those low latency queries.
> Cache miss rate and metaspace gc can also be reduced by eliminating the redundant classes.
> Here is the query to get the persons whose last name is Brunner and hire from 1st Jan 1990:
> SELECT full_name, hire_date FROM cp.`employee.json` where last_name = 'Brunner' and hire_date >= '1990-01-01 00:00:00.0';
> Now get the persons whose last name is Bernard and hire from 1st Jan 1990.
> SELECT full_name, hire_date FROM cp.`employee.json` where last_name = 'Bernard' and hire_date >= '1990-01-01 00:00:00.0';
> Figure !compilation_time.png! shows the compilation time of the generated code by the above query in FilterRecordBatch on my laptop
> Figure !code_compare.png! shows the only difference of the generated code from the attachments is the last_name value at line 156.
> It is straightforward that the redundant class compilation can be eliminated by making the string12 as a member of the class and set the value when the instance is created
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)