Runtime macro rendering very slow in Velocity 1.6-dev (679708) compared to 1.5
------------------------------------------------------------------------------
Key: VELOCITY-607
URL: https://issues.apache.org/jira/browse/VELOCITY-607
Project: Velocity
Issue Type: Bug
Components: Engine
Environment: Maven 2, JUnit, JUnitPerf, JRat, custom testbench:
http://www.iki.fi/wyla/velocity/testbench
Reporter: Jarkko Viinamäki
Priority: Critical
Attachments: velocity-1.6-head-20080725-velocity24-test.PNG
The following test template (see VELOCITY-24):
## local macro, not global
#macro(letter $char)
This is the letter $char
#end
#letter("A")
#letter("B")
#letter("C")
#letter("D")
#letter("E")
#letter("F")
#letter("G")
#letter("H")
#letter("I")
#letter("J")
#letter("K")
#letter("L")
#letter("M")
#letter("N")
#letter("O")
#letter("P")
#letter("Q")
#letter("R")
#letter("S")
#letter("T")
#letter("U")
#letter("V")
#letter("W")
#letter("X")
#letter("Y")
#letter("Z")
---
Works quickly and correctly with Velocity 1.5 with several concurrent threads.
However, 1.6-dev is a LOT slower (even 20x).
The major performance bottlenecks seem to be:
RuntimeMacro.render (60% of time)
VelocimacroFactory.getVelocimacro (20% of time)
With several threads this test also causes Velocity to throw error(s):
org.apache.velocity.exception.MacroOverflowException: Exceed maximum 20 macro
calls. Call Stack:letter->letter->letter->letter->letter
at
org.apache.velocity.runtime.VelocimacroFactory.startMacroRendering(VelocimacroFactory.java:179)
at
org.apache.velocity.runtime.RuntimeInstance.startMacroRendering(RuntimeInstance.java:1693)
at
org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:200)
at
org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:230)
at
org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:178)
at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:323)
at org.apache.velocity.Template.merge(Template.java:324)
at org.apache.velocity.Template.merge(Template.java:232)
at
org.apache.velocity.test.load.Velocity24Test.testRendering(Velocity24Test.java:51)
This is related to VELOCITY-297 but the fix doesn't seem work with the new
modified macro implementation.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]