You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Henri Biestro (Jira)" <ji...@apache.org> on 2021/06/07 13:15:06 UTC

[jira] [Closed] (JEXL-344) Don't fill stack trace for JexlExpression#Return (to improve performance)

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

Henri Biestro closed JEXL-344.
------------------------------

> Don't fill stack trace for JexlExpression#Return (to improve performance)
> -------------------------------------------------------------------------
>
>                 Key: JEXL-344
>                 URL: https://issues.apache.org/jira/browse/JEXL-344
>             Project: Commons JEXL
>          Issue Type: Improvement
>    Affects Versions: 3.1
>            Reporter: David Costanzo
>            Assignee: Henri Biestro
>            Priority: Minor
>             Fix For: 3.2
>
>
> In profiling my JEXL-enabled application, I observed that nearly 10% of the execution time is spend filling in the {{JexlExpression#Return}} class's stack.  As far as I can tell, the Return object's stack is not used by JEXL and so does not need to be present.
> I read about an optimization technique where you override fillInStackTrace() to be a no-op when using exceptions for control flow.  As I understand it, this practice was codified into Java 7 with the "writableStackTrace" parameter to Throwable's ctor that lets you disable filling in the stack trace.
> For Java 6 and below, this is as easy as adding this to the body of {{Return}}.
> {code:java}
> @Override
> public Throwable fillInStackTrace()
> {
>     // Don't fill in the stack.  It's not needed for return values.
>     return this;
> }
> {code}
> In private testing, this has the expected effect: my application finishes in ~10% less time and all unit tests continue to pass.
>  
> There's a discussion of this on stack overflow:
> [https://stackoverflow.com/questions/1836164/override-fillinstacktrace-for-control-flow-performance]
>  
> There's a better discussion in the answer given to:
> [https://stackoverflow.com/questions/11434431/exception-without-stack-trace-in-java]
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)