geirm       01/04/18 13:28:12

  Modified:    src/java/org/apache/velocity/runtime/parser/node
                        ASTNumberLiteral.java ASTReference.java
                        ASTSetDirective.java
  Log:
  ASTReference : Kent's suggestion for speedup in render. This should be a
  big improvment.  Thanks Kent!
  
  ASTNumberLiteral : from Kent's profiling results - removed object creation to
  init as the template is immutable and so is Integer.
  
  ASTSetDirective : another Kent profiling hint - move the substring out of
  render to init - the tempate is immutable... should be just dandy this way.
  
  Revision  Changes    Path
  1.4       +21 -1     
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/node/ASTNumberLiteral.java
  
  Index: ASTNumberLiteral.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/node/ASTNumberLiteral.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ASTNumberLiteral.java     2001/03/19 18:33:10     1.3
  +++ ASTNumberLiteral.java     2001/04/18 20:28:11     1.4
  @@ -59,6 +59,8 @@
   
   public class ASTNumberLiteral extends SimpleNode
   {
  +    private Integer value = null;
  +
       public ASTNumberLiteral(int id)
       {
           super(id);
  @@ -75,9 +77,27 @@
           return visitor.visit(this, data);
       }
   
  +    /**
  +     *  Initialization method - doesn't do much but do the object
  +     *  creation.  We only need to do it once.
  +     */
  +    public Object init( InternalContextAdapter context, Object data) 
  +        throws Exception
  +    {
  +        /*
  +         *  init the tree correctly
  +         */
  +
  +        super.init( context, data );
  +
  +        value = new Integer( getFirstToken().image );
  +
  +        return data;
  +    } 
  +
       public Object value( InternalContextAdapter context)
       {
  -        return new Integer(getFirstToken().image);
  +        return value;
       }
   
   }
  
  
  
  1.24      +26 -7     
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/node/ASTReference.java
  
  Index: ASTReference.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/node/ASTReference.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ASTReference.java 2001/03/19 18:53:52     1.23
  +++ ASTReference.java 2001/04/18 20:28:11     1.24
  @@ -78,7 +78,8 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Christoph Reck</a>
  - * @version $Id: ASTReference.java,v 1.23 2001/03/19 18:53:52 geirm Exp $ 
  + * @author <a href="mailto:[EMAIL PROTECTED]>Kent Johnson</a>
  + * @version $Id: ASTReference.java,v 1.24 2001/04/18 20:28:11 geirm Exp $ 
   */
   public class ASTReference extends SimpleNode
   {
  @@ -215,9 +216,18 @@
           if ( escaped )
           {
               if ( value == null )
  -                writer.write( NodeUtils.specialText(getFirstToken()) + prefix + 
"\\" +  nullString );
  +            {
  +                writer.write( NodeUtils.specialText(getFirstToken()));
  +                writer.write( prefix );
  +                writer.write( "\\" );
  +                writer.write( nullString );
  +            }
               else
  -                writer.write( NodeUtils.specialText(getFirstToken()) + prefix + 
nullString );
  +            {
  +                writer.write( NodeUtils.specialText(getFirstToken()) );
  +                writer.write( prefix );
  +                writer.write( nullString );
  +            }
           
               return true;
           }
  @@ -231,15 +241,24 @@
               /* 
                *  write prefix twice, because it's shmoo, so the \ don't escape each 
other...
                */
  -
  -            writer.write(NodeUtils.specialText(getFirstToken()) + prefix + prefix + 
nullString);
               
  -            if (referenceType != QUIET_REFERENCE && Runtime.getBoolean( 
RuntimeConstants.RUNTIME_LOG_REFERENCE_LOG_INVALID, true) )
  +            writer.write( NodeUtils.specialText(getFirstToken()) );
  +            writer.write( prefix );
  +            writer.write( prefix );
  +            writer.write( nullString );
  +
  +            if (referenceType != QUIET_REFERENCE 
  +                 && Runtime.getBoolean( 
  +                     RuntimeConstants.RUNTIME_LOG_REFERENCE_LOG_INVALID, true) )
  +            {
                   Runtime.warn(new ReferenceException("reference : template = " + 
context.getCurrentTemplateName(), this));
  +            }
           }                    
           else
           {
  -            writer.write(NodeUtils.specialText(getFirstToken()) + prefix + 
value.toString());
  +            writer.write( NodeUtils.specialText(getFirstToken()) );
  +            writer.write( prefix );
  +            writer.write( value.toString() );
           }                    
       
           return true;
  
  
  
  1.15      +12 -2     
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/node/ASTSetDirective.java
  
  Index: ASTSetDirective.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/node/ASTSetDirective.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ASTSetDirective.java      2001/03/19 17:17:53     1.14
  +++ ASTSetDirective.java      2001/04/18 20:28:11     1.15
  @@ -72,10 +72,11 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
  - * @version $Id: ASTSetDirective.java,v 1.14 2001/03/19 17:17:53 geirm Exp $
  + * @version $Id: ASTSetDirective.java,v 1.15 2001/04/18 20:28:11 geirm Exp $
    */
   public class ASTSetDirective extends SimpleNode
   {
  +    private String leftReference = "";
       private Node right;
       private ASTReference left;
       boolean blather = false;
  @@ -112,6 +113,11 @@
   
           blather = Runtime.getBoolean(Runtime.RUNTIME_LOG_REFERENCE_LOG_INVALID, 
true);
    
  +        /*
  +         *  grab this now.  No need to redo each time
  +         */
  +        leftReference = left.getFirstToken().image.substring(1);
  +
           return data;
       }        
   
  @@ -148,9 +154,13 @@
            */
           
           if (left.jjtGetNumChildren() == 0)
  -            context.put(left.getFirstToken().image.substring(1), value);
  +        {
  +            context.put( leftReference, value);
  +        }
           else
  +        {
               left.setValue(context, value);
  +        }
       
           return true;
       }
  
  
  

Reply via email to