EQATEC released their own profiler tool that supports WP7 applications. You can download the tool for free here. When you start the program itself, the UI might be a bit confusing at first, since it doesn't look anything like the default profiler that is bundled with Visual Studio:
First of all, you need to specify the path to the application folder, where the XAP package is located. In most of the cases, this would be Solution/Project/bin/Debug for a simple application.
With the default settings assigned (for now there is no need to change those), make sure that the application XAP is selected (the one that is associated with a DLL that has the same name as the XAP) click on Build. Once this process is done, you should see the build summary:
Notice that there is a slight increase in the size of the application - this is absolutely normal since there will be profiling components included. Now it is time to run the application, and you here you'll be prompted with a dialog that will let you choose where exactly do you want to test the application - on an actual device or in the emulator.
I am going to do both, but we'll start with the emulator. Once the application is deployed and running, you should see in the progress report that the profiling has started:
While in the process, you can take snapshots by clicking the Take Snapshot button.
This will record performance indicators for a specific time - later on you will be able to view them. This feature is especially useful when you start a continuous action (e.g. data download).
This won't give you much information on applications that don't perform resource-intensive operations, so to test the profiler's abilities, I created an app that downloads more than 400,000 user records from a developers' community.
The snapshots reveal the time spans my applications spends in a specific method and what method transfers/blends with another one by passign an action to it:
One feature I really like is the possibility to compare reports therefore giving you the possibility to se how well you optimized your code:
Once I run the application on the phone, I might be getting different results. It is important to mention, that in order to be able to test application performance on a real device, you need to unlock it via AppHub. Make sure you have the Zune software running and that there is a full sync relationship established.
Running the same build on a phone, you should expect some performance jumps compared to it running on the emulator:
As you can see, the application executed some methods faster on the phone compared to the emulator. Mind you, this strictly depends on the application and you are more likely to get the opposite effect - an application running much faster on the emulator.
I am really curious as to what Microsoft will release with the updated toolset, since the growth of the platform pretty much requires that developers invest in performance optimizations. Till then, the profiler provided by EQUATEC is pretty much your only choice.