[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    RE: AnimationTimer and actual frame rate
From:       "Markus KARG" <markus () headcrashing ! eu>
Date:       2016-12-25 16:22:59
Message-ID: 000c01d25ecb$2ba4ac30$82ee0490$ () eu
[Download RAW message or body]

Merry Christmas,

my personal observation when performaning an EU-fundet power consumption study was \
that once an (even no-op implementation!) AnimationTimer was registered, the CPU load \
increased by several percent _permanently_ on our lab machine. In contrast, with key \
frame animation, the CPU load stayed at zero percent but showed scattered peaks. \
Unfortunately I cannot tell you the actual JavaFX-internal reason for sure, but I \
assume that AnimationTimer is called at maximum possible CPU speed (i. e. more or \
less an endless loop) while the animation classes update only once per _pulse_ (i e. \
more or less 60 FPS).

It feels like (but this might be a false detection of mine; I did not check the \
source code) as the pure _registering_ of an AnimationTimer would enable JavaFX to \
actually run some JavaFX-internal code "undelayed", while _just_ using animation \
classes do not run that same code before the next _pulse_ (possible by using timer \
interrupts set to the next 1/60s).

It would be great if the JavaFX team could confirm this difference between \
AnimationTimer and animation classes?

-Markus

-----Original Message-----
From: openjfx-dev [mailto:openjfx-dev-bounces@openjdk.java.net] On Behalf Of Michael \
                Paus
Sent: Samstag, 24. Dezember 2016 10:21
To: openjfx-dev@openjdk.java.net
Subject: Re: AnimationTimer and actual frame rate

Many thanks again.

Am 23.12.16 um 18:18 schrieb Markus KARG:
> I assume it is OK for you to use internal APIs?
Of course it is :-)
> Then you could go with:
> 
> com.sun.javafx.perf.PerformanceTracker.getSceneTracker(scene)
> 
> and let a timer fire one per second to request tracker.getAverageFPS().
I'll give that a try as soon as my family lets me.
> 
> Beware not to use any AnimationTimer handlers, as it will reduce FPS, even if the \
> handler method is short.
Is the AnimationTimer handler more critical in this respect than any of the built-in \
animations?
> 
> -Markus
> 
> -----Original Message-----
> From: openjfx-dev [mailto:openjfx-dev-bounces@openjdk.java.net] On 
> Behalf Of Michael Paus
> Sent: Freitag, 23. Dezember 2016 17:04
> To: openjfx-dev@openjdk.java.net
> Subject: Re: AnimationTimer and actual frame rate
> 
> Thank you. That explains a lot of what I am observing but it also makes me wonder \
> how you could effectively measure the actual frame rate because that's what you are \
> normally interested in. Michael
> 
> Am 23.12.16 um 09:15 schrieb Markus KARG:
> > AnimationTimer is fired once per "planned" frame (i. e. running at maximum \
> > possible FPS), not per "actually rendered" frame. JavaFX contains a lot of \
> > optimizations. For example, a boolean property animated over time to switch from \
> > false to true will only imply a single modification, hence only one frame is \
> >                 actually rendered.
> > -Markus
> > 
> > -----Original Message-----
> > From: openjfx-dev [mailto:openjfx-dev-bounces@openjdk.java.net] On 
> > Behalf Of Michael Paus
> > Sent: Donnerstag, 22. Dezember 2016 17:29
> > To: openjfx-dev@openjdk.java.net
> > Subject: AnimationTimer and actual frame rate
> > 
> > Hi all,
> > 
> > for quite a while now I am observing a strange behavior when running 
> > some
> > 
> > JavaFX graphics tests. The scenario is very simple. I am running some 
> > animation
> > 
> > which puts some load onto the graphics engine and I am trying to 
> > measure the
> > 
> > frame rate via an instance of an AnimationTimer. When I increase the 
> > load high
> > 
> > enough I reach a point where the indicated frame rate is just 60FPS 
> > or even a bit
> > 
> > lower but the observed frame rate on screen has already dropped to 
> > something
> > 
> > like 1-2 FPS. So what I observe is that the AnimationTimer is running 
> > much faster
> > 
> > than the updates of the graphics. How can that be? Does anybody have 
> > an explanation
> > 
> > under which circumstances this can happen? Or is this behavior a bug which I \
> > should report? 
> > Just some puzzle for the boring Christmas holidays :-)
> > 
> > Merry Christmas to all of you
> > 
> > Michael
> > 
> > PS: My system is a MacBook Pro with NVidia graphic card.
> > 
> > 
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic