Olaf,
I’ve been spending time looking into improving rendering performance for the last couple of days and improving framerate/timer accuracy. Particularly for 60 FPS apps. I’ve noticed that on my Lumia 920 it was taking at least about 20 milliseconds to update/render per render pass and most of that time was with synchronizing the UI thread with the rendering thread. I’ve managed to reduce that time by 10 milliseconds, making a huge performance improvement. I’m now getting about ~45 FPS on a Lumia 920. Unfortunately, I don’t think it’s possible to get it to render any faster on that particular device. At least with a XAML based app, because Corona is competing with Microsoft’s XAML UI framework for the rendering thread (i.e.: there is only 1 rendering thread on WP8 and it must be shared) and about every few render passes there is an “additional” 10-15 millisecond delay until XAML UI blocks us. Note that in order to achieve 60 FPS, we must be able to render every 16 milliseconds, and that delay is making it impossible.
Now, if this was a pure DirectX C++ WP8 app, no XAML, then I think it’s absolutely possible to achieve 60 FPS because we would then have absolute control over the rendering system (i.e.: not competing with a UI framework for rendering time). But a XAML based app is needed if we want to support native UI and ad libraries in the future, which is a requirement for many Corona developers. Plus, some features are only available on the .NET side, making a XAML based app required as well.
Interestingly enough, I know that Unity for WP8 is a XAML based app as well. I remember chatting with them and Appcelerator last October, hearing that their WP8 apps were 30 FPS. I can’t help but think that they’re running into the same issue I’ve mentioned above because they’re competing for the rendering threads time too.
In any case, I did make significant performance improvements and I plan on sending out another update in the middle of next week. It should be noticeably smoother.
I’ll also talk with my Microsoft contacts on getting that version tested by them on a higher end WP8 device to see what the framerate is. Interestingly enough, they consider my Lumia 920 a low-end device, so, I’d be interested to know how well it runs on their better devices. Just note that it may take 1-2 weeks until I can those test results from them.