Java 2D drawing performance is 5x slower with Java 7 than with Java 6 on OS X
DRC
dcommander at users.sourceforge.net
Thu Aug 7 09:07:29 UTC 2014
I have an app that does a fairly simple image drawing operation in Java
2D. When I run the app under Java 6 (from the Apple Java Developer
package), it draws at about 130 Mpixels/sec. When I run the same app
under either Oracle JDK 7 or my own build of OpenJDK 7 (from the
macosx-port-dev Mercurial branch), it draws at about 20 Mpixels/sec.
You can build enough of the app to demonstrate this issue by doing:
svn co svn://svn.code.sf.net/p/turbovnc/code/trunk/java java
cd java
javac com/turbovnc/vncviewer/ImageDrawTest.java
java -Dsun.java2d.trace=count -cp . com.turbovnc.vncviewer.ImageDrawTest
Results from Java 6:
--------------------
Graphics device supports HW acceleration.
Window size: 1240 x 900
129.607164 Mpixels/sec
130.089516 Mpixels/sec
4768 calls to sun.java2d.loops.Blit::Blit(IntRgb, SrcNoEa, IntArgbPre)
Results from Java 7:
--------------------
Graphics device supports HW acceleration.
Window size: 1240 x 900
19.109939 Mpixels/sec
20.604652 Mpixels/sec
19.849651 Mpixels/sec
316 calls to sun.java2d.opengl.OGLSwToSurfaceBlit::Blit(IntRgb,
AnyAlpha, "OpenGL Surface")
2 calls to sun.java2d.loops.Blit::Blit(IntRgb, SrcNoEa, IntRgb)
317 calls to sun.java2d.opengl.OGLRTTSurfaceToSurfaceBlit::Blit("OpenGL
Surface (render-to-texture)", AnyAlpha, "OpenGL Surface")
6 calls to sun.java2d.loops.FillRect::FillRect(AnyColor, SrcNoEa, AnyInt)
641 total calls to 4 different primitives
It seems clear that Java 7 is using OpenGL by default to implement Java
2D drawing, and this path is apparently slow on my machine (probably
others as well. I'm using a Mac Mini with nVidia GeForce 9400 and OS X
10.8.5.) But there appears to be no way to get back the faster loops
that were used in Java 6. I'd love to be able to just do
-Dsun.java2d.opengl=false, but no luck there. If I could figure out how
to make the OpenGL drawing faster, that would be acceptable as well.
Any help is greatly appreciated.
More information about the macosx-port-dev
mailing list