No, I haven’t committed it. I started looking into it but got sidetracked with 
having to earn a living.

Ralph

> On Aug 9, 2018, at 11:13 AM, Carter Kozak <cko...@apache.org> wrote:
> 
> I've pushed the benchmark here:
> https://github.com/apache/logging-log4j2/pull/209
> 
> Is the extended stack trace benchmark committed somewhere? I don't see
> it in log4j-perf.
> My benchmark isn't very pretty either, I'm open to ideas for cleaning
> up the implementation.
> 
> -ck
> 
> On Thu, Aug 9, 2018 at 1:56 PM, Ralph Goers <ralph.go...@dslextreme.com> 
> wrote:
>> I created a micro benchmark for the extended stack trace. It isn’t pretty.
>> 
>> Ralph
>> 
>>> On Aug 9, 2018, at 10:53 AM, Carter Kozak <cko...@apache.org> wrote:
>>> 
>>> That's true, as long as we collect the stack trace when the
>>> ThrowableProxy is created, the rest can be deferred. I can take a look
>>> at this.
>>> 
>>> I'm working on a benchmark with a larger stack to simulate conditions
>>> in a real application as well.
>>> 
>>> -ck
>>> 
>>> On Thu, Aug 9, 2018 at 12:47 PM, Ralph Goers <ralph.go...@dslextreme.com> 
>>> wrote:
>>>> What I don’t understand is that ThrowableProxy seems to be doing a whole 
>>>> bunch of stuff in the constructor. I would think a lot of that could be 
>>>> deferred until the Throwable is being rendered.
>>>> 
>>>> Ralph
>>>> 
>>>>> On Aug 9, 2018, at 8:10 AM, Carter Kozak <c4kof...@gmail.com> wrote:
>>>>> 
>>>>> The piece I'd like to avoid is ThrowableProxy.loadClass invocations,
>>>>> which can be expensive depending on the ClassLoader implementation.
>>>>> The ThrowablePatternConverter implementations all fall back to the
>>>>> default implementation which operates directly on a Throwable rather
>>>>> than the proxy object.
>>>>> 
>>>>> I would prefer to make ThrowableProxy work better rather than
>>>>> disabling it entirely, which would open the flood gates for issues
>>>>> with the Jackson and Serializable layouts, though the counterargument
>>>>> is that without loading classes, there is no additional information
>>>>> provided by ThrowableProxy over a Throwable.
>>>>> 
>>>>> I will take a look at flagging ThrowableProxy class loading instead of
>>>>> disabling ThrowableProxy entirely when I have a moment.
>>>>> 
>>>>> Thanks,
>>>>> -ck
>>>>> 
>>>>> On Thu, Aug 9, 2018 at 1:36 AM, Ralph Goers <ralph.go...@dslextreme.com> 
>>>>> wrote:
>>>>>> What is the purpose of disabling ThrowableProxy? All the throwable 
>>>>>> pattern converters rely on it.
>>>>>> 
>>>>>> Ralph
>>>>>> 
>>>>>>> On Aug 8, 2018, at 8:34 AM, Carter Kozak <cko...@apache.org> wrote:
>>>>>>> 
>>>>>>> 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.
>>>>>>>>>> 
>>>>>>>>>> ----
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> ---
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>>> 
>>> 
>> 
>> 
> 


Reply via email to