You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by "Nathan Bubna (JIRA)" <de...@velocity.apache.org> on 2008/07/25 16:01:32 UTC

[jira] Assigned: (VELOCITY-607) Runtime macro rendering very slow in Velocity 1.6-dev (679708) compared to 1.5

     [ https://issues.apache.org/jira/browse/VELOCITY-607?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nathan Bubna reassigned VELOCITY-607:
-------------------------------------

    Assignee: Nathan Bubna

> 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
>            Assignee: Nathan Bubna
>            Priority: Critical
>         Attachments: velocity-1.5-velocity24-test.PNG, 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: dev-unsubscribe@velocity.apache.org
For additional commands, e-mail: dev-help@velocity.apache.org