[ 
https://issues.apache.org/jira/browse/DRILL-3912?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14986634#comment-14986634
 ] 

ASF GitHub Bot commented on DRILL-3912:
---------------------------------------

Github user jinfengni commented on a diff in the pull request:

    https://github.com/apache/drill/pull/189#discussion_r43714617
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/expr/ClassGenerator.java ---
    @@ -218,11 +220,16 @@ public HoldingContainer addExpr(LogicalExpression ex) 
{
       }
     
       public HoldingContainer addExpr(LogicalExpression ex, boolean rotate) {
    +    return addExpr(ex, rotate, false);
    --- End diff --
    
    I think this had better to be addExpr(ex, rotate, true). That is, be 
default, we turn on CSE. Otherwise, seems the patch only turns on CSE for 
Project, Filter, HashAgg, HashJoin, but not for other operators. 
    
    Is there any reason that we do not by default turn on CSE here?



> Common subexpression elimination in code generation
> ---------------------------------------------------
>
>                 Key: DRILL-3912
>                 URL: https://issues.apache.org/jira/browse/DRILL-3912
>             Project: Apache Drill
>          Issue Type: Improvement
>            Reporter: Steven Phillips
>            Assignee: Jinfeng Ni
>
> Drill currently will evaluate the full expression tree, even if there are 
> redundant subtrees. Many of these redundant evaluations can be eliminated by 
> reusing the results from previously evaluated expression trees.
> For example,
> {code}
> select a + 1, (a + 1)* (a - 1) from t
> {code}
> Will compute the entire (a + 1) expression twice. With CSE, it will only be 
> evaluated once.
> The benefit will be reducing the work done when evaluating expressions, as 
> well as reducing the amount of code that is generated, which could also lead 
> to better JIT optimization.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to