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;
}