Xith3d 2x slower than java3d on direct port

I wrote a Milkshape3D file loader for java3d a week ago, and decided to port it to xith3d hoping to get some speed improvment, but instead I’m actually running twice as slow. (BTW, my file loader for .ms3d file format is complete and supports animations)

The code is almost an identical direct port, except for the way I have to handel animations. In java3d, my animations are behaviors added to the scene graph. In xith3d my animations are kept in a vector and each iteration of my render while(true) loop I call the processStimulus() for each behavior.

Another diffrence in the code is how I update my BY_REF geometry array. In java3d I just change my original array directly, while in xith3d I get a GeomDataInterface for my points and normals and update it thru that.

Beyond those changes, my code is very identical.

Are there any other ‘optimizations’ someone coming from java3d could use. I’ve tried various RenderOption settings and none of that helps.

Again I stress the code is almost identical to my java3d version, so any algorithm slowness would affect each.

Run -Xprof on both versions and post the results.

Cas :slight_smile:

Xith3d Xprof

FPS:15.603058
Total MS rendering: 5259
Total MS behaving: 1150

Flat profile of 0.01 secs (1 total ticks): Thread-0

Interpreted + native Method
100.0% 0 + 1 sun.awt.windows.WToolkit.shutdown
100.0% 0 + 1 Total interpreted

Flat profile of 15.07 secs (1399 total ticks): Monitor Ctrl-Break

Interpreted + native Method
98.7% 0 + 1381 java.net.PlainSocketImpl.socketAccept
0.8% 0 + 11 java.net.PlainSocketImpl.socketCreate
0.2% 0 + 3 java.lang.ClassLoader$NativeLibrary.load
0.1% 0 + 1 sun.net.InetAddressCachePolicy$1.run
0.1% 0 + 1 com.intellij.rt.execution.application.AppMain$1.run
0.1% 0 + 1 java.io.BufferedReader.readLine
0.1% 0 + 1 java.net.PlainSocketImpl.initProto
100.0% 0 + 1399 Total interpreted

Flat profile of 15.17 secs (1409 total ticks): main

Interpreted + native Method
18.5% 0 + 260 net.java.games.jogl.impl.windows.WindowsGLImpl.glDrawArrays
4.6% 0 + 65 java.lang.ClassLoader$NativeLibrary.load
3.4% 0 + 48 sun.awt.windows.Win32SurfaceData.initDDraw
2.3% 0 + 32 java.io.WinNTFileSystem.getBooleanAttributes
1.9% 0 + 26 java.io.FileOutputStream.writeBytes
1.6% 0 + 22 net.java.games.jogl.impl.windows.WindowsGLImpl.dispatch_wglChoosePixelFormatARB
1.5% 0 + 21 net.java.games.jogl.impl.windows.WindowsGLImpl.dispatch_wglGetPixelFormatAttribivARB
1.4% 0 + 20 java.lang.ClassLoader.defineClass0
1.2% 0 + 17 net.java.games.jogl.impl.windows.WGL.SwapBuffers
0.7% 0 + 10 net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.createGL
0.6% 0 + 9 net.java.games.jogl.impl.windows.WGL.ChoosePixelFormat0
0.6% 0 + 9 sun.awt.font.NativeFontWrapper.registerFonts
0.4% 0 + 6 net.java.games.jogl.impl.windows.WGL.wglMakeCurrent
0.4% 0 + 5 sun.awt.Win32GraphicsEnvironment.registerFontWithPlatform
0.4% 0 + 5 sun.awt.color.CMM.cmmColorConvert
0.4% 0 + 5 java.io.FileInputStream.open
0.3% 0 + 4 java.io.WinNTFileSystem.checkAccess
0.3% 0 + 4 net.java.games.jogl.impl.windows.WGL.DescribePixelFormat0
0.2% 0 + 3 com.jlindamood.xith.SimpleXithUniverse.
0.1% 0 + 2 java.util.zip.ZipFile.open
0.1% 2 + 0 java.nio.charset.CoderResult.isUnderflow
0.1% 0 + 2 net.java.games.jogl.impl.windows.WindowsGLImpl.glTexImage2D
0.1% 0 + 2 javax.vecmath.Matrix3d.compute_qr
0.1% 0 + 2 java.lang.Class.forName0
0.1% 2 + 0 java.util.Hashtable.get
50.1% 51 + 651 Total interpreted (including elided)

 Compiled + native   Method                        

6.4% 90 + 0 com.jlindamood.xith.MS3D.MilkAnimationExact$SyncedGeometryUpdate.updateData
2.3% 32 + 0 javax.vecmath.Matrix4f.transform
1.9% 27 + 0 com.xith3d.scenegraph.GeomNioFloatData.setFloats
1.2% 17 + 0 javax.vecmath.Matrix4f.transform
0.5% 7 + 0 com.jlindamood.xith.MS3D.MilkAnimationExact.createJointTransforms
0.3% 4 + 0 java.awt.image.ComponentColorModel.getDataElements
0.2% 3 + 0 java.awt.image.ComponentColorModel.getRGBComponent
0.2% 3 + 0 javax.vecmath.Matrix4f.mul
0.1% 2 + 0 javax.vecmath.Matrix4f.set
0.1% 2 + 0 javax.vecmath.Quat4f.interpolate
0.1% 2 + 0 javax.vecmath.Matrix4f.set
0.1% 1 + 0 com.xith3d.scenegraph.Transform3D.set
0.1% 1 + 0 net.java.games.jogl.impl.windows.WindowsGLImpl.glBindBufferARB
0.1% 1 + 0 com.xith3d.scenegraph.GeomNioFloatData.get
0.1% 1 + 0 java.lang.reflect.Field.copy
0.1% 1 + 0 com.xith3d.utility.profile.ProfileTimer.startProfile
0.1% 1 + 0 java.io.DataInputStream.readFully
0.1% 0 + 1 net.java.games.jogl.impl.windows.WindowsGLContext.dynamicLookupFunction
0.1% 1 + 0 java.lang.StringBuffer.expandCapacity
0.1% 1 + 0 java.lang.String.lastIndexOf
0.1% 1 + 0 com.xith3d.spatial.bounds.Frustum.classify
0.1% 1 + 0 java.awt.image.ColorModel.getLinearRGB16TosRGB8LUT
0.1% 1 + 0 javax.vecmath.Matrix3d.compute_svd
0.1% 1 + 0 java.util.zip.InflaterInputStream.read
0.1% 0 + 1 com.jlindamood.xith.MS3D.MilkAnimationExact.processStimulus
14.8% 205 + 2 Total compiled (including elided)

     Stub + native   Method                        

30.2% 0 + 423 net.java.games.jogl.impl.windows.WindowsGLImpl.glDrawArrays
0.4% 0 + 6 java.io.FileInputStream.readBytes
0.3% 0 + 4 java.lang.StrictMath.acos
0.3% 0 + 4 java.lang.StrictMath.pow
0.3% 0 + 4 java.nio.Bits.copyFromByteArray
0.2% 0 + 3 java.util.zip.ZipFile.getEntry
0.1% 0 + 2 net.java.games.jogl.impl.windows.WGL.wglGetProcAddress
0.1% 0 + 1 net.java.games.jogl.impl.windows.WindowsGLImpl.dispatch_glBindBufferARB
0.1% 0 + 1 java.util.zip.Inflater.inflateBytes
0.1% 1 + 0 net.java.games.jogl.impl.windows.WindowsGLImpl.glNormalPointer0
0.1% 1 + 0 net.java.games.jogl.impl.windows.WindowsGLImpl.glDisable
32.1% 2 + 448 Total stub

Thread-local ticks:
0.5% 7 Blocked (of total)
0.6% 9 Class loader
2.4% 34 Compilation

Global summary of 15.17 seconds:
100.0% 1509 Received ticks
6.3% 95 Received GC ticks
2.3% 34 Compilation
0.3% 5 Other VM operations
0.6% 9 Class loader

======Java3d xprof======= (1/3)
Flat profile of 0.70 secs (69 total ticks): main

Interpreted + native Method
33.3% 0 + 23 sun.awt.windows.Win32SurfaceData.initDDraw
5.8% 0 + 4 java.io.WinNTFileSystem.getBooleanAttributes
2.9% 0 + 2 java.io.WinNTFileSystem.canonicalizeWithPrefix0
1.4% 0 + 1 sun.awt.windows.WComponentPeer.pShow
1.4% 0 + 1 java.lang.Throwable.fillInStackTrace
1.4% 0 + 1 java.lang.ClassLoader$NativeLibrary.load
1.4% 0 + 1 java.lang.reflect.Array.newArray
1.4% 0 + 1 sun.awt.Win32GraphicsEnvironment.registerFontWithPlatform
1.4% 0 + 1 java.lang.ClassLoader.findLoadedClass
1.4% 0 + 1 java.io.FileInputStream.open
1.4% 0 + 1 java.io.WinNTFileSystem.getLastModifiedTime
1.4% 0 + 1 sun.awt.windows.WFramePeer.createAwtFrame
1.4% 0 + 1 sun.awt.windows.WWindowPeer._setTitle
1.4% 0 + 1 java.lang.Class.forName0
1.4% 0 + 1 sun.java2d.SurfaceData.initIDs
1.4% 0 + 1 java.util.zip.ZipFile.getEntry
1.4% 0 + 1 java.util.zip.ZipFile.open
1.4% 0 + 1 sun.awt.font.NativeFontWrapper.registerFonts
1.4% 0 + 1 java.lang.StringBuffer.
1.4% 0 + 1 java.lang.ClassLoader.defineClass0
1.4% 0 + 1 MilkTester.
1.4% 0 + 1 java.lang.StringBuffer.
1.4% 0 + 1 java.awt.EventQueue.class$
1.4% 0 + 1 java.security.Permissions.
1.4% 1 + 0 java.lang.Throwable.
85.5% 2 + 57 Total interpreted (including elided)

 Compiled + native   Method                        

1.4% 0 + 1 java.util.HashMap.hash
1.4% 0 + 1 Total compiled

Thread-local ticks:
7.2% 5 Class loader
5.8% 4 Compilation

Flat profile of 3.15 secs (206 total ticks): Thread-1

Interpreted + native Method
27.4% 0 + 48 sun.awt.Win32GraphicsDevice.getMaxConfigsImpl
13.1% 0 + 23 java.lang.Class.forName0
4.6% 0 + 8 java.lang.ClassLoader.defineClass0
2.3% 0 + 4 sun.awt.Win32GraphicsDevice.isPixFmtSupported
2.3% 0 + 4 javax.media.j3d.TriangleArray.createRetained
2.3% 0 + 4 javax.media.j3d.View.setUniverse
1.7% 0 + 3 java.lang.ClassLoader.findBootstrapClass
1.7% 0 + 3 sun.awt.Win32GraphicsDevice.getDefaultPixIDImpl
1.1% 0 + 2 com.jlindamood.MS3D.BML.MilkshapeGroup.buildGeo
1.1% 0 + 2 java.awt.image.ComponentColorModel.getDataElements
1.1% 0 + 2 java.lang.ClassLoader$NativeLibrary.load
1.1% 2 + 0 com.jlindamood.MS3D.BML.MilkFile.loadFrames
1.1% 1 + 1 java.lang.ClassLoader.findBootstrapClass0
1.1% 0 + 2 java.io.FileInputStream.close0
0.6% 0 + 1 javax.media.j3d.Canvas3D.
0.6% 0 + 1 sun.java2d.loops.Blit.Blit
0.6% 0 + 1 javax.media.j3d.Shape3D.createRetained
0.6% 0 + 1 javax.media.j3d.ImageComponent2D.createRetained
0.6% 0 + 1 javax.media.j3d.Texture2D.createRetained
0.6% 0 + 1 java.awt.image.DataBufferByte.
0.6% 0 + 1 javax.media.j3d.Locale.
0.6% 1 + 0 java.lang.ClassLoader.loadClass
0.6% 1 + 0 com.jlindamood.MS3D.BML.MilkJoint.fillLocalAnimationMatrix
0.6% 0 + 1 javax.media.j3d.RenderBin.
0.6% 0 + 1 java.util.zip.ZipFile.read
84.6% 9 + 139 Total interpreted (including elided)

 Compiled + native   Method                        

2.3% 4 + 0 sun.awt.image.ByteInterleavedRaster.getDataElements
1.7% 3 + 0 java.awt.image.ComponentColorModel.getDataElements
1.1% 2 + 0 java.awt.image.ComponentColorModel.extractComponent
1.1% 2 + 0 sun.awt.image.ByteInterleavedRaster.setDataElements
0.6% 1 + 0 java.util.HashMap.hash
0.6% 1 + 0 javax.media.j3d.Transform3D.
0.6% 1 + 0 java.io.DataInputStream.readFully
0.6% 1 + 0 javax.media.j3d.GeometryArrayRetained.setNormal
0.6% 0 + 1 java.io.BufferedInputStream.read1
0.6% 1 + 0 javax.media.j3d.GeometryArrayRetained.setCoordinate
0.6% 1 + 0 java.awt.image.ComponentColorModel.getAlpha
10.3% 17 + 1 Total compiled

     Stub + native   Method                        

0.6% 0 + 1 java.util.zip.ZipFile.getEntry
0.6% 0 + 1 Total stub

Thread-local ticks:
15.0% 31 Blocked (of total)
0.6% 1 Class loader
0.6% 1 Interpreter
2.9% 5 Compilation
0.6% 1 Unknown: no last frame

FPS: 31.453363
FPS: 42.957043
FPS: 42.91417
FPS: 42.957043

========Java3d XProf 2/3=====

Flat profile of 5.39 secs (426 total ticks): Image Fetcher 0

Interpreted + native Method
25.0% 0 + 3 sun.awt.image.JPEGImageDecoder.readImage
8.3% 0 + 1 java.lang.System.arraycopy
8.3% 0 + 1 sun.java2d.loops.GraphicsPrimitive.makeUniqueID
8.3% 0 + 1 java.awt.image.DataBufferInt.
8.3% 0 + 1 java.util.Vector.ensureCapacityHelper
8.3% 0 + 1 java.text.DateFormatSymbols.cacheLookup
8.3% 0 + 1 sun.text.resources.DateFormatZoneData.getContents
8.3% 0 + 1 java.util.StringTokenizer.nextElement
83.3% 0 + 10 Total interpreted

Thread-local ticks:
97.2% 414 Blocked (of total)
8.3% 1 Class loader
8.3% 1 Compilation

FPS: 42.490116
FPS: 44.955044
FPS: 49.455986
FPS: 49.9002
FPS: 42.957043

Flat profile of 9.74 secs (891 total ticks): J3D-SoundSchedulerUpdateThread-1

Interpreted + native Method
0.4% 1 + 0 javax.media.j3d.SoundScheduler.shortestTimeToFinish
0.4% 1 + 0 Total interpreted

Runtime stub + native Method
0.4% 1 + 0 interpreter_entries Runtime1 stub
0.4% 1 + 0 Total runtime stubs

Thread-local ticks:
72.1% 642 Blocked (of total)
99.2% 247 Compilation

Flat profile of 9.75 secs (891 total ticks): J3D-RenderStructureUpdateThread-1

Interpreted + native Method
6.9% 0 + 2 sun.awt.Win32GraphicsConfig.getBounds
6.9% 0 + 2 javax.media.j3d.RenderBin.processMessages
3.4% 1 + 0 javax.media.j3d.IndexedObject.getIdxUsed
3.4% 1 + 0 javax.media.j3d.NodeRetained.getCurrentLocalToVworld
3.4% 1 + 0 javax.media.j3d.GeometryAtom.isEnable
3.4% 1 + 0 javax.media.j3d.IndexedUnorderSet.add
3.4% 0 + 1 javax.media.j3d.RenderMolecule.equals
3.4% 1 + 0 java.util.ArrayList.add
3.4% 0 + 1 javax.media.j3d.MasterControl.runMonitor
3.4% 1 + 0 javax.media.j3d.RenderAtom.inDirtyOrientedRAs
3.4% 1 + 0 javax.media.j3d.RenderBin.findRenderMolecule
3.4% 0 + 1 javax.media.j3d.RenderBin.findEnvironmentSet
3.4% 1 + 0 javax.media.j3d.IndexedUnorderSet.remove
51.7% 8 + 7 Total interpreted

 Compiled + native   Method                        

6.9% 0 + 2 javax.media.j3d.MasterControl.runMonitor
6.9% 2 + 0 javax.media.j3d.RenderMolecule.equals
3.4% 1 + 0 javax.media.j3d.UnorderList.add
3.4% 1 + 0 javax.media.j3d.Transform3D.mul
3.4% 1 + 0 javax.media.j3d.Transform3D.isAffine
3.4% 1 + 0 javax.media.j3d.MemoryFreeList.add
3.4% 1 + 0 javax.media.j3d.CanvasViewCache.computeFrustumPlanes
31.0% 7 + 2 Total compiled

Thread-local ticks:
96.7% 862 Blocked (of total)
17.2% 5 Compilation

Flat profile of 9.76 secs (891 total ticks): J3D-BehaviorScheduler-1

Interpreted + native Method
1.2% 6 + 0 javax.media.j3d.BehaviorScheduler.doWork
0.4% 1 + 1 javax.vecmath.Tuple3f.interpolate
0.4% 1 + 1 javax.media.j3d.GeometryArrayRetained.setupMirrorVertexPointer
0.4% 2 + 0 javax.media.j3d.Shape3DRetained.updateBounds
0.2% 0 + 1 javax.media.j3d.Transform3D.mul
0.2% 1 + 0 javax.media.j3d.Alpha.mfmod
0.2% 1 + 0 javax.media.j3d.Alpha.finished
0.2% 1 + 0 javax.media.j3d.MasterControl.sendRunMessage
0.2% 1 + 0 javax.media.j3d.GeometryArrayRetained.setupMirrorColorPointer
0.2% 1 + 0 javax.media.j3d.Transform3D.set
0.2% 0 + 1 javax.media.j3d.WakeupOr.resetTree
0.2% 0 + 1 javax.media.j3d.Alpha.value
0.2% 1 + 0 javax.vecmath.Matrix4d.set
0.2% 0 + 1 javax.media.j3d.Shape3DRetained.getCombineBounds
0.2% 1 + 0 javax.media.j3d.Alpha.value
0.2% 1 + 0 java.util.ArrayList.add
0.2% 1 + 0 java.util.AbstractCollection.isEmpty
0.2% 1 + 0 javax.media.j3d.WakeupCriteriaEnumerator.reset
0.2% 1 + 0 javax.media.j3d.BoundingBox.combine
5.5% 21 + 6 Total interpreted

 Compiled + native   Method                        

45.0% 221 + 0 com.jlindamood.MS3D.BML.MilkAnimationExact$SyncedGeometryUpdate.updateData
14.1% 69 + 0 javax.media.j3d.Transform3D.transform
9.8% 48 + 0 javax.media.j3d.Transform3D.transform
8.1% 40 + 0 javax.media.j3d.GeometryArrayRetained.computeBoundingBox
2.6% 13 + 0 com.jlindamood.MS3D.BML.MilkAnimationExact.createJointTransforms
2.0% 10 + 0 javax.media.j3d.Transform3D.set
1.6% 0 + 8 javax.media.j3d.MasterControl.runMonitor
1.4% 7 + 0 javax.media.j3d.Transform3D.mul
0.8% 4 + 0 javax.media.j3d.Transform3D.set
0.6% 2 + 1 javax.media.j3d.GeometryArrayRetained.sendDataChangedMessage
0.4% 2 + 0 javax.media.j3d.MasterControl.sendMessage
0.4% 0 + 2 javax.media.j3d.Alpha.finished
0.2% 1 + 0 javax.media.j3d.UnorderList.add
0.2% 1 + 0 javax.media.j3d.Shape3DRetained.updateBounds
0.2% 1 + 0 javax.media.j3d.GeometryArray.updateData
0.2% 1 + 0 javax.media.j3d.GeometryArrayRetained.processCoordsChanged
0.2% 1 + 0 javax.media.j3d.Shape3DRetained.getGeomAtomsArray
0.2% 1 + 0 javax.media.j3d.MRSWLock.readUnlock
0.2% 1 + 0 javax.media.j3d.WakeupCriterion.resetTree
0.2% 1 + 0 javax.media.j3d.J3dMessage.incRefcount
0.2% 1 + 0 javax.media.j3d.GeometryArrayRetained.setupMirrorVertexPointer
0.2% 1 + 0 javax.media.j3d.WakeupCriteriaEnumerator.reset
89.0% 426 + 11 Total compiled

     Stub + native   Method                        

1.0% 0 + 5 java.lang.StrictMath.acos
0.2% 0 + 1 java.lang.Object.wait
1.2% 0 + 6 Total stub

Runtime stub + native Method
0.2% 1 + 0 monitorexit Runtime1 stub
0.2% 1 + 0 Total runtime stubs

Thread-local ticks:
44.9% 400 Blocked (of total)
0.6% 3 Interpreter
3.5% 17 Compilation

Flat profile of 9.77 secs (892 total ticks): J3D-TransformStructureUpdateThread-1

Interpreted + native Method
2.8% 0 + 3 javax.media.j3d.MasterControl.runMonitor
0.9% 1 + 0 javax.media.j3d.TransformGroupRetained.processChildLocalToVworld
0.9% 1 + 0 javax.media.j3d.BoundingBox.transform
0.9% 0 + 1 javax.media.j3d.TransformStructure.processMessages
5.5% 2 + 4 Total interpreted

 Compiled + native   Method                        

59.6% 0 + 65 javax.media.j3d.MasterControl.runMonitor
0.9% 1 + 0 javax.media.j3d.BoundingBox.updateBoundsStates
0.9% 1 + 0 javax.media.j3d.Transform3D.transform
0.9% 1 + 0 javax.media.j3d.BoundingBox.set
62.4% 3 + 65 Total compiled

     Stub + native   Method                        

0.9% 0 + 1 java.lang.Object.wait
0.9% 0 + 1 Total stub

Thread-local ticks:
87.8% 783 Blocked (of total)
31.2% 34 Compilation

=======Java3d (3/3)=======

Flat profile of 9.77 secs (892 total ticks): J3D-GeometryStructureUpdateThread-1

Interpreted + native Method
2.3% 1 + 1 javax.media.j3d.GeometryStructure.processMessages
1.1% 0 + 1 javax.media.j3d.MasterControl.runMonitor
1.1% 1 + 0 javax.media.j3d.GeometryStructure.processBoundsChanged
1.1% 0 + 1 javax.media.j3d.GeometryStructure.addToBhNodeArr
5.7% 2 + 3 Total interpreted

 Compiled + native   Method                        

47.1% 0 + 41 javax.media.j3d.MasterControl.runMonitor
1.1% 1 + 0 javax.media.j3d.BoundingBox.checkBoundsIsNaN
48.3% 1 + 41 Total compiled

Thread-local ticks:
90.2% 805 Blocked (of total)
46.0% 40 Compilation

Flat profile of 9.78 secs (893 total ticks): J3D-BehaviorStructureUpdateThread-1

Interpreted + native Method
3.2% 0 + 2 javax.media.j3d.MasterControl.runMonitor
1.6% 1 + 0 javax.media.j3d.BoundingSphere.checkBoundsIsNaN
1.6% 1 + 0 javax.media.j3d.BehaviorStructure.processMessages
6.3% 2 + 2 Total interpreted

 Compiled + native   Method                        

92.1% 0 + 58 javax.media.j3d.MasterControl.runMonitor
1.6% 1 + 0 javax.media.j3d.J3dMessage.decRefcount
93.7% 1 + 58 Total compiled

Thread-local ticks:
92.9% 830 Blocked (of total)

Flat profile of 11.89 secs (1009 total ticks): J3D-Renderer-1

Interpreted + native Method
61.8% 0 + 417 javax.media.j3d.Canvas3D.syncRender
3.0% 0 + 20 javax.media.j3d.GeometryArrayRetained.executeVA
2.1% 0 + 14 javax.media.j3d.Canvas3D.swapBuffers
1.3% 1 + 8 javax.media.j3d.Renderer.doWork
1.0% 0 + 7 javax.media.j3d.Canvas3D.textureclear
0.7% 0 + 5 java.lang.Object.wait
0.7% 0 + 5 javax.media.j3d.NativeConfigTemplate3D.isSceneAntialiasingMultiSamplesAvailable
0.6% 0 + 4 javax.media.j3d.GraphicsConfigTemplate3D.runMonitor
0.4% 0 + 3 javax.media.j3d.Canvas3D.callDisplayList
0.4% 3 + 0 javax.media.j3d.CanvasViewCache.buildProjView
0.4% 0 + 3 sun.awt.Win32GraphicsConfig.getBounds
0.4% 2 + 1 javax.media.j3d.RenderMolecule.updateAttributes
0.3% 0 + 2 javax.media.j3d.Canvas3D.setViewport
0.1% 0 + 1 java.lang.System.arraycopy
0.1% 1 + 0 javax.media.j3d.EnvironmentSet.render
0.1% 1 + 0 javax.media.j3d.TextureBin.renderList
0.1% 0 + 1 javax.media.j3d.Canvas3D.setRenderMode
0.1% 1 + 0 javax.media.j3d.DisplayListRenderMethod.render
0.1% 0 + 1 javax.media.j3d.TextureUnitStateRetained.updateTextureUnitState
0.1% 1 + 0 javax.media.j3d.TextureBin.renderList
0.1% 1 + 0 javax.media.j3d.CachedFrustum.computeEdges
0.1% 1 + 0 javax.media.j3d.MasterControl.getMessage
0.1% 1 + 0 javax.media.j3d.AttributeBin.updateAttributes
0.1% 0 + 1 javax.media.j3d.Canvas3D.createContext
0.1% 0 + 1 javax.media.j3d.Transform3D.invertGeneral
76.7% 19 + 499 Total interpreted (including elided)

 Compiled + native   Method                        

0.6% 0 + 4 javax.media.j3d.MasterControl.runMonitor
0.3% 2 + 0 javax.media.j3d.Renderer.doWork
0.3% 2 + 0 javax.media.j3d.CachedFrustum.computeValues
0.3% 2 + 0 javax.media.j3d.GeometryArrayRetained.execute
0.3% 2 + 0 javax.media.j3d.Transform3D.mul
0.3% 2 + 0 javax.media.j3d.CachedFrustum.computeEdges
0.1% 1 + 0 javax.vecmath.Tuple3d.set
0.1% 1 + 0 javax.media.j3d.VertexArrayRenderMethod.renderGeo
0.1% 1 + 0 javax.media.j3d.Transform3D.set
0.1% 1 + 0 javax.media.j3d.CanvasViewCache.computeFrustumPlanes
0.1% 1 + 0 java.lang.Math.abs
2.8% 15 + 4 Total compiled

     Stub + native   Method                        

18.2% 0 + 123 javax.media.j3d.GeometryArrayRetained.executeVA
18.2% 0 + 123 Total stub

Thread-local ticks:
33.1% 334 Blocked (of total)
2.2% 15 Compilation

Flat profile of 11.94 secs (1014 total ticks): J3D-MasterControl

Interpreted + native Method
13.1% 0 + 63 java.lang.Thread.yield
8.9% 0 + 43 javax.media.j3d.J3dThread.runMonitor
6.0% 0 + 29 java.lang.Object.wait
0.4% 0 + 2 javax.media.j3d.MasterControl$27.run
0.4% 2 + 0 javax.media.j3d.MasterControl.updateMirrorObjects
0.4% 1 + 1 javax.media.j3d.WakeupCondition.setConditionMet
0.4% 0 + 2 java.lang.Object.notify
0.2% 0 + 1 java.lang.String.equalsIgnoreCase
0.2% 1 + 0 javax.media.j3d.MasterControlThread.run
0.2% 1 + 0 javax.media.j3d.View.updateViewCache
0.2% 0 + 1 javax.media.j3d.MasterControl.registerView
0.2% 0 + 1 javax.media.j3d.Renderer.
0.2% 0 + 1 java.lang.ClassLoader.defineClass0
0.2% 1 + 0 javax.media.j3d.J3dThread.getThreadData
0.2% 1 + 0 javax.media.j3d.MasterControl.sendMessage
0.2% 0 + 1 javax.media.j3d.CanvasViewCache.
31.5% 7 + 145 Total interpreted

 Compiled + native   Method                        

40.5% 0 + 195 javax.media.j3d.J3dThread.runMonitor
0.6% 3 + 0 javax.media.j3d.RenderBin.lockGeometry
0.4% 1 + 1 javax.media.j3d.MasterControl.runMonitor
41.5% 4 + 196 Total compiled

     Stub + native   Method                        

24.9% 0 + 120 java.lang.Object.wait
0.8% 0 + 4 java.lang.Object.notify
25.7% 0 + 124 Total stub

Thread-local ticks:
52.5% 532 Blocked (of total)
1.2% 6 Compilation

Flat profile of 11.96 secs (1015 total ticks): J3D-RenderingAttributesStructureUpdateThread

 Compiled + native   Method                        

14.1% 0 + 49 javax.media.j3d.MasterControl.runMonitor
14.1% 0 + 49 Total compiled

Thread-local ticks:
65.7% 667 Blocked (of total)
85.9% 299 Compilation

Flat profile of 12.85 secs (1097 total ticks): DestroyJavaVM

Thread-local ticks:
100.0% 1097 Blocked (of total)

Flat profile of 12.98 secs (1105 total ticks): AWT-EventQueue-0

Interpreted + native Method
1.4% 0 + 3 sun.awt.windows.WComponentPeer.nativeHandleEvent
0.9% 0 + 2 java.lang.Thread.yield
2.3% 0 + 5 Total interpreted

Thread-local ticks:
80.5% 890 Blocked (of total)
97.7% 210 Compilation

Flat profile of 13.53 secs (1158 total ticks): Monitor Ctrl-Break

Interpreted + native Method
99.1% 0 + 1148 java.net.PlainSocketImpl.socketAccept
0.3% 0 + 3 java.net.PlainSocketImpl.socketCreate
0.2% 0 + 2 java.net.PlainSocketImpl.initProto
0.1% 0 + 1 java.net.PlainSocketImpl.socketBind
0.1% 0 + 1 java.io.FileInputStream.readBytes
0.1% 0 + 1 sun.nio.cs.ISO_8859_1$Decoder.decodeArrayLoop
0.1% 0 + 1 java.lang.ClassLoader$NativeLibrary.load
99.9% 0 + 1157 Total interpreted

Thread-local ticks:
0.1% 1 Class loader

Global summary of 13.64 seconds:
100.0% 1285 Received ticks
7.9% 101 Received GC ticks
4.3% 55 Compilation
0.3% 4 Other VM operations
0.6% 8 Class loader
0.3% 4 Interpreter
0.1% 1 Unknown code