I'm kicking off a series of posts about Silverlight perfofmance under Windows Phone 7 with a a kind of obvious one, but one that is important to keep in mind from the get go.

Tip: 

  • Test your code on device as much as possible 

But the Emulator is awesome?!?

True, the emulator, otherwise known as the x86 Device Emulator, or simply XDE, is awesome, but it is still not an accurate representation of a device. In fact since the XDE is usually so smooth, it's extremely easy to fall into the trap of adding more features "because it works on the emulator".

The Hardware

The emulator restricts itself to one core, adds artificial Sleep()'s and limits the amount of memory it is happy to eat up (so it won't just chew through whatever is available), but that still isn't enough.Chances are that even running at one core the emulator is still running faster than the device (most cores today are going to be running faster than 1GHz and chances are you are going to have less things running on that core than the device does). Throw in a desktop GPU which beat a mobile GPU handsdown and you've got a winning combination. If you happen to have an older machine, then the XDE will simply run like a dog - and you won't be able to tell if your app crawls because of your code or because of your machine.

But I don't have a device!

Common problem, especially in these trying, pre-release, times. Fear not though! Your local Microsoft office most likely has some devices and can help hook you up. Shoot them an email and let them know that you are working on an app, include a description and some screenshots from the XDE (to sweeten the deal) and they should be able to help.