Hi Johan,
This optimization is buggy but to see whether it helps you can try setting
-Dprism.scrollcacheopt=true
Please see JDK-8093860 for reason why it was disabled:
https://bugs.openjdk.java.net/browse/JDK-8093860
- Chien
On 10/15/15, 12:30 PM, Johan Vos wrote:
Thanks Jim.
I tried with different optimization flags, but it doesn't make a big
difference. Tracing it down to system calls, somehow the gl implementation
seems be be slower (glDrawElements(GL_TRIANGLES, numQuads * 2 * 3,
GL_UNSIGNED_SHORT, 0) takes more time on Android than on iOS) per
invocation. The number of invocations is comparable between iOS and Android.
If you can give me a direction on where to search for the disabled
scrolling optimization, I'll try to re-enable that and see how it improves
performance. It might be a huge and quick win...
Thanks again,
- Johan
On Thu, Oct 15, 2015 at 9:02 PM, Jim Graham<james.gra...@oracle.com> wrote:
Perhaps optimization flags with the native compiler? Also, was it called
a similar number of times on both?
Ideally we'd just be using copyArea for the scrolling, but at one point we
disabled the scrolling optimizations on retina MBP because they didn't work
with a scale factor and I don't think we reenabled them yet. That would
kill scrolling performance on mobile as a result of having to rerender the
scene on each scroll regardless of how long produceAlphas takes...
...jim
On 10/15/15 4:27 AM, Johan Vos wrote:
After spending lots of time optimizing JavaFX on iOS, I am now at the
point
where scrolling is 10 times faster on iOS than on Android.
The scrolling in the iOS version of the Gluon JavaOne mobile schedule
builder is pretty good imho. On Android, it is much slower. I profiled and
compared both, and it turns out that on Android, we spend lots of time in
the native implementation of NativePiscesRasterizer.produceFillAlphas
(implemented in native-prism/NativePiscesRasterizer.c)
On average, calling this native function on an iPhone 6 takes 40,000ns
whereas on a Nexus 6, this takes about 800,000ns.
If anyone has a suggestion on how to improve or avoid this, I'm all ears.
Thanks,
- Johan