Stefan Leonhartsberger created LOG4J2-1029:
----------------------------------------------

             Summary: Performance improvement when gathering Location 
Information
                 Key: LOG4J2-1029
                 URL: https://issues.apache.org/jira/browse/LOG4J2-1029
             Project: Log4j 2
          Issue Type: Improvement
          Components: Core
    Affects Versions: 2.3
         Environment: Java 1.8.0_45 64-bit
Maven 3.3.1
Windows 7

basically any...
            Reporter: Stefan Leonhartsberger
            Priority: Minor


When gathering Location Information in Log4jLogEvent 
Log4j uses *Thread.currentThread().getStackTrace()*

Using *(new Throwable()).getStackTrace();* would be more performant especially 
for larger stacks according to various benchmarks: 
* http://alexradzin.blogspot.co.at/2011/12/how-slow-getstacktrace-is.html
* 
http://stackoverflow.com/questions/2347828/how-expensive-is-thread-getstacktrace

This can easily be verified with a simple JMH Benchmark test.

What would help in addition is to skip the Log4j Part when iterating over the 
StackTrace - use i=4 or whatever you may consider as being save enough instead 
of starting with i=0. 

Basically something like:
{code}
final StackTraceElement[] stackTrace = (new Throwable()).getStackTrace();
for (int i = 4; i < stackTrace.length; i++) {
}
{code}





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to