OK, now I'm really puzzled - I watched the JavaFX performance talk from 2011 and learned about PeformanceTracker. It's too bad that's not public API, but it works. I used it like so:
PerformanceTracker tracker = PerformanceTracker.getSceneTracker(scene); tracker.setOnRenderedFrameTask(new Runnable() { long lastTimestamp = System.currentTimeMillis(); @Override public void run() { final long now = System.currentTimeMillis(); long delta = now - lastTimestamp; if (delta < 1000) System.out.println("Frame took " + delta + "msec"); lastTimestamp = now; } }); The 1000 thing is just to avoid printing a nonsense timestamp when the UI hasn't been touched for a while. The deltas I see are consistently between 10-20msec which would be between 50 and 60fps, i.e. the vsync of the screen. But the wacky thing is, this doesn't change when I increase the size of the window, even though the animation is noticeably more choppy. It still says there's a 10-20msec gap between frames even though my eyes tell me otherwise. Even when I shrink the window size right down and get super smooth animation, the above code prints the same kind of deltas. This makes me think that whatever is going on, the regular JavaFX drawing thread isn't the issue. It seems to be churning through the scene at the same totally acceptable rate no matter what. So I'm thinking the issue must be something to do with how fast the GPU drains the command queue or something. BTW I tried doing -Dprism.order=j2d to see what would happen, and the GUI hangs before rendering anything. I'll file a bug on that later. On Thu, Apr 3, 2014 at 11:54 AM, Mike Hearn <m...@plan99.net> wrote: > How does the OS "tank"? >> > > All the OS animations hit the same frame rate as the app itself does. For > instance, opening Mission Control is normally smooth, but when a maximized > JFX app is animating, it's not. > > It feels like the GPU is being overworked but as I'm not a GPU expert at > all, I'm not sure where to begin - I am not even sure how to find out the > frame rate so I know when tweaks are improving things! Is there a way to > get this data from the system? >