Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 Dec 2000 18:50:31 +0100
From:      Ernst de Haan <ernst@jollem.com>
To:        "Koster, K.J." <K.J.Koster@kpn.com>
Cc:        FreeBSD Java mailing list <freebsd-java@freebsd.org>
Subject:   Re: Performance hint for JDK on FreeBSD
Message-ID:  <20001201185031.A58178@c187104187.telekabel.chello.nl>
In-Reply-To: <20001201174923.A57144@c187104187.telekabel.chello.nl>; from ernst@jollem.com on Fri, Dec 01, 2000 at 05:49:23PM %2B0100
References:  <59063B5B4D98D311BC0D0001FA7E4522026D7A7D@l04.research.kpn.com> <20001201174923.A57144@c187104187.telekabel.chello.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
Heya Kees-Jan and all,


> > I never knew that it is a 400% performance boost, which does sound a little
> > strange. I'm really curious why that is.
> 
> Well, I turned on profiling, and found that most of the time is spent in X11
> specific Java code. I will re-run the tests after I temporarily disabled your
> suggested modifications.

Okay, I did a little profiling (using -Xrunhprof:cpu=times). This is the top
10 when I dont have the modified font.properties file:

   CPU TIME (ms) BEGIN (total = 29358) Fri Dec  1 17:55:12 2000
   rank   self  accum   count trace method
      1 24.71% 24.71%  253952  1304 sun/io/CharToByteSingleByte.getNative
      2 16.04% 40.76%    8188  1399 sun/io/CharToByteSingleByte.convert
      3 12.93% 53.69%  253952   182 java/lang/String.charAt
      4  2.25% 55.94%    8184   620 java/lang/Throwable.fillInStackTrace
      5  1.44% 57.38%    8258   938 java/lang/String.<init>
      6  1.33% 58.71%       1  1275 sun/awt/font/NativeFontWrapper.registerFonts
      7  1.21% 59.93%    8184   867 java/lang/Throwable.<init>
      8  1.08% 61.01%   10958   153 java/io/StreamTokenizer.read
      9  1.07% 62.08%   10958   623 java/io/BufferedInputStream.read
     10  0.91% 62.99%     318   123 java/util/Properties.loadConvert

The traces for the top 3 are:

   TRACE 1304:
      sun/io/CharToByteSingleByte.getNative
      sun/io/CharToByteSingleByte.convert
      sun/awt/font/NativeFontWrapper.registerFonts
      sun/awt/X11GraphicsEnvironment.registerNativeFonts

   TRACE 1399:
      sun/io/CharToByteSingleByte.convert
      sun/awt/font/NativeFontWrapper.registerFonts
      sun/awt/X11GraphicsEnvironment.registerNativeFonts
      sun/java2d/SunGraphicsEnvironment$2.run

   TRACE 182:
      java/lang/String.charAt
      sun/io/CharToByteSingleByte.getNative
      sun/io/CharToByteSingleByte.convert
      sun/awt/font/NativeFontWrapper.registerFonts

Here are the startup times for AWT:

          Original:         w/modifications:
          ----------------  ------------------------------
   run 1: 2607 ms           608 ms
   run 2: 2579 ms           573 ms
   run 3: 2583 ms           601 ms
   run 4: 2713 ms           599 ms

Note: The only modifications performed are adding the URW fonts to my
XF86Config and using the font.properties from Kees-Jan's site instead of the
original one!

Here is the top 10 of CPU time eaters for my application with the
modifications applied:

   CPU TIME (ms) BEGIN (total = 9169) Fri Dec  1 17:46:56 2000
   rank   self  accum   count trace method
      1  2.91%  2.91%     318   110 java/util/Properties.loadConvert
      2  2.75%  5.66%     252   109 java/util/Properties.loadConvert
      3  2.25%  7.91%       5   158 java/util/Properties.load
      4  1.98%  9.89%    6356   987 java/lang/String.indexOf
      5  1.73% 11.63%    5479   584 java/io/BufferedInputStream.read
      6  1.73% 13.36%    5479   142 java/io/StreamTokenizer.read
      7  1.49% 14.85%    8590   203 java/lang/StringBuffer.append
      8  1.42% 16.27%    8590   675 java/lang/String.charAt
      9  1.41% 17.68%    8133   946 java/lang/StringBuffer.append
     10  1.36% 19.04%    8133   207 java/lang/String.charAt

Now all of a sudden my application code comes on top. And that's the way I
like it! :)

IMHO these results are quite amazing!

Next thing I'll do is write a small program that will do nothing but starting
AWT and displaying the startup times, as the current results are obtained by
looking at the log output of my own Swing application.


Ernst


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-java" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001201185031.A58178>