I'm curious what you would think of a system property to disable ThrowableProxy creation? My initial preference was to avoid this type of flag and make the common case cleaner, however without providing a mechanism to disable the functionality that differentiates it from Throwable I'm not sure that's feasible.
An alternative approach may be to allow custom implementations of the logic surrounding ThrowableProxy.toCacheEntry which could potentially disable classloader lookups, or implement something like the request in github pull/195. This extension point would make ThrowableProxy refactors significantly more difficult in the future. -ck On Tue, Aug 7, 2018 at 11:10 PM, Carter Kozak <c4kof...@gmail.com> wrote: > My guess is that StackWalker provides additional information beyond > the array of classes > supplied by the SecurityManager, though I've not done a thorough analysis yet. > > A quick targeted benchmark of our current implementations: > > Benchmark Mode Cnt > Score Error Units > StackTraceBenchmark.defaultJava8 thrpt 3 113965.921 ± > 119706.986 ops/s > StackTraceBenchmark.securityManager thrpt 3 788004.237 ± 82578.567 > ops/s > StackTraceBenchmark.stackWalker thrpt 3 182902.031 ± > 39018.395 ops/s > > > -ck > > On Tue, Aug 7, 2018 at 7:20 PM, Ralph Goers <ralph.go...@dslextreme.com> > wrote: >> I have to wonder why using the security manager is faster than using >> StackWalker. StackWalker was created just for this purpose. Is the way it is >> implemented the problem? >> >> Ralph >> >> >>> On Aug 7, 2018, at 1:34 PM, cakofony <g...@git.apache.org> wrote: >>> >>> GitHub user cakofony opened a pull request: >>> >>> https://github.com/apache/logging-log4j2/pull/202 >>> >>> [LOG4J2-2391] Improve ThrowableProxy performace on java 9+ >>> >>> Share the SecurityManager implementation of getCurrentStackTrace >>> with the java 9 implementation. >>> >>> You can merge this pull request into a Git repository by running: >>> >>> $ git pull https://github.com/cakofony/logging-log4j2 >>> java9_getcurrentstacktrace >>> >>> Alternatively you can review and apply these changes as the patch at: >>> >>> https://github.com/apache/logging-log4j2/pull/202.patch >>> >>> To close this pull request, make a commit to your master/trunk branch >>> with (at least) the following in the commit message: >>> >>> This closes #202 >>> >>> ---- >>> commit 52bf8569e8e9881d0999156c31d99b99f28e6e73 >>> Author: Carter Kozak <ckozak@...> >>> Date: 2018-08-07T20:27:10Z >>> >>> [LOG4J2-2391] Improve ThrowableProxy performace on java 9+ >>> >>> Share the SecurityManager implementation of getCurrentStackTrace >>> with the java 9 implementation. >>> >>> ---- >>> >>> >>> --- >>> >> >>