java.awt event processing performance degradation on JRE7 - linux
Nicolas Carranza
nicarran at gmail.com
Wed Apr 18 06:06:47 PDT 2012
Here are the results of running (3 times):
time -f '%P' java PerformanceRegressionTest2 useLogging
on my laptop using different JREs:
JRE6: 13%, 13%, 12%
JRE7: 20%, 22%, 22%
JRE7*: 12%, 11%, 12%
JRE7_u4: 12%, 13%, 13%
JRE8: 13%, 14%, 14%
where:
JRE6:
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) Server VM (build 20.5-b03, mixed mode)
JRE7:
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)
JRE7*:
is the same JRE7 but the test was run without logging enabled:
time -f '%P' java PerformanceRegressionTest2
JRE7_u4:
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
JRE8:
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b34)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b07, mixed mode)
Cheers,
Nicolas
On 04/18/2012 03:56 AM, Alan Bateman wrote:
> On 18/04/2012 02:01, Nicolas Carranza wrote:
>> Federico's patch solves the performance regression (see:
>> http://mail.openjdk.java.net/pipermail/jdk7u-dev/2012-April/002694.html
>> ). But instead of this patch I find better to change the PlatformLogger
>> class: insert "if(!isLoggable(level)) return;" at the beginning of the
>> method sun.util.logging.PlatformLogger.JavaLogger.doLog(int level,
>> String msg, Object... params) . The string convertion affecting the
>> performance is done on the PlatformLogger.JavaLogger.doLog (even when
>> the message is not loggable) and it is there where the problem should be
>> fixed (to be more clear and also cover more use cases). Fixing it there
>> also clears why the performance regression does not happen when
>> redirectPlatformLoggers has not been called (when logging is not used):
>> PlatformLogger.LoggerProxy.doLog(int level, String msg, Object...
>> params) does not do the string convertion when the message is not
>> loggable.
>>
>> Federico's patch has already been pushed to the jdk8 repository, when
>> will it be applied to jdk7 (or my propossed change if it is preferred)?
>>
>> [ Here is a jvisualvm memory profiling snapshot of
>> PerformanceRegresionTest3:
>> http://www.java.net/forum/topic/performance/general-performance-discussion/jre7s-javaawt-performance-degradation-caused-javautillogging-linux#comment-823486
>>
>> . ]
>>
>> Cheers,
>> Nicolas
> I'm curious to know if you have you re-tested the performance with a
> recent build of 8 or 7u4 that has the AWT fix? It would be interesting
> to see then if the checking the logging level make an observable
> difference or not.
>
> -Alan
>
More information about the jdk7u-dev
mailing list