[ 
https://issues.apache.org/jira/browse/VELOCITY-607?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12622041#action_12622041
 ] 

Nathan Bubna commented on VELOCITY-607:
---------------------------------------

Ok, i've committed everything from your latest patch, with just a bit of 
cleanup here and there.  All the tests pass, performance looks quite improved 
to me.  This is awesome, Jarkko!  Thanks!

Before i resolve this, does anyone know of any code that 
could/would/should/does/did/might reference the VMProxyArg, VMContext, or 
VMReferenceMungeVisitor classes?  It seems unlikely to me, so i'm tempted to 
just remove them, rather than merely deprecate them.  Also, the Runtime class 
has been deprecated for some time now.  I'm ready to yank that out too.  
Thoughts anyone?

> 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
>             Fix For: 1.6
>
>         Attachments: velocity-1.5-velocity24-test.PNG, 
> velocity-1.6-dev-macro-performance-IDEAS-v2.6.patch, 
> velocity-1.6-dev-macro-performance-IDEAS-v2.7.patch, 
> 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]

Reply via email to