You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2010/11/21 20:24:46 UTC

svn commit: r1037529 - in /pig/branches/branch-0.8: CHANGES.txt src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java

Author: daijy
Date: Sun Nov 21 19:24:46 2010
New Revision: 1037529

URL: http://svn.apache.org/viewvc?rev=1037529&view=rev
Log:
PIG-1738: New logical plan: Optimized UserFuncExpression.getFieldSchema

Modified:
    pig/branches/branch-0.8/CHANGES.txt
    pig/branches/branch-0.8/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java

Modified: pig/branches/branch-0.8/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/CHANGES.txt?rev=1037529&r1=1037528&r2=1037529&view=diff
==============================================================================
--- pig/branches/branch-0.8/CHANGES.txt (original)
+++ pig/branches/branch-0.8/CHANGES.txt Sun Nov 21 19:24:46 2010
@@ -207,6 +207,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
 
 BUG FIXES
 
+PIG-1738: New logical plan: Optimized UserFuncExpression.getFieldSchema (daijy)
+
 PIG-1732: New logical plan: logical plan get confused if we generate the same
 field twice in ForEach (daijy)
 

Modified: pig/branches/branch-0.8/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java?rev=1037529&r1=1037528&r2=1037529&view=diff
==============================================================================
--- pig/branches/branch-0.8/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java (original)
+++ pig/branches/branch-0.8/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java Sun Nov 21 19:24:46 2010
@@ -41,7 +41,8 @@ import org.apache.pig.newplan.logical.re
 public class UserFuncExpression extends LogicalExpression {
 
     private FuncSpec mFuncSpec;
-    private Operator implicitReferencedOperator = null; 
+    private Operator implicitReferencedOperator = null;
+    private EvalFunc<?> ef = null;
     
     public UserFuncExpression(OperatorPlan plan, FuncSpec funcSpec) {
         super("UserFunc", plan);
@@ -137,7 +138,10 @@ public class UserFuncExpression extends 
             }
         }
 
-        EvalFunc<?> ef = (EvalFunc<?>) PigContext.instantiateFuncFromSpec(mFuncSpec);
+        // Since ef only set one time, we never change its value, so we can optimize it by instantiate only once.
+        // This significantly optimize the performance of frontend (PIG-1738)
+        if (ef==null)
+            ef = (EvalFunc<?>) PigContext.instantiateFuncFromSpec(mFuncSpec);
         Schema udfSchema = ef.outputSchema(Util.translateSchema(inputSchema));
 
         if (udfSchema != null) {