Odds are it’s the display.newText() calls that is your biggest performance hit. Whammy replaced most of his display.newText() calls in his OmNomster app with calls to a bitmap font library, which is why his app performs so well. Our image loading and widget loading is actually quite fast on WP8… up until you do text updates.
For example, for the widget TableView, if you do a display.newText() for ever onRowRender() gets called, then that is an huge performance killer right there because that function gets called as you scroll to new rows in the table view. Note that this is performance killer on Android too and causes scrolling to be not smooth. There are some optimizations that you can do. For example, if you know the number of rows will be limited, then you can pre-load the text objects you create via display.newText() and then display them when the onRowRender() gets called. Or you can use bitmap font (the fastest) solution provided that you have control of the characters that are being displayed.
Also, it might help to understand how display.newText() works. This function creates an uncompressed 8-bit grayscale bitmap, has the operating system draw text to that bitmap, and then that bitmap is pushed as a texture to the GPU. This is an extremely expensive thing to do on all platforms and Corona developers usually notice the performance hit when using display.newText() as a visual FPS counter, which will severely impact the framerate on all platforms. Now, the reason it is more expensive on WP8 is because Microsoft doesn’t have an API to render text to a bitmap on the CPU side. Instead, Microsoft’s APIs draw text directly to the GPU which is of wrong image format and is not part of Corona’s visual tree. So, we’re forced to capture that text texture on the GPU, which involves transferring the bitmap from the GPU to the CPU, re-formatting the image to grayscale, and then sending it back to the GPU. That round trip is very expensive and it is our *only* option on WP8.
But that said, most SDKs don’t offer the ability to have the operating system render text, leveraging the hard work that Apple, Google, and Microsoft put into getting text formatting/layout correct for different languages/locales. Most SDKs, such as Unity, only offer bitmap font support. Corona offers the ability to render text both ways, rendered by the OS or via bitmap fonts. We do so because each text rendering technique has their advantages and disadvantages, allowing you to get the best performance or best layout for other languages.
So, I suggest as a quick text to prove what I’m saying above, try commenting out function that are generating/updating text in your code. You should see a huge performance difference. After proving this, from there I recommend that you experiment with bitmap fonts.