I’ve been working allot on RemoteX’s Windows Mobile application recently. The goal is to make it run faster.

I started using EQATEC profiler, as its the only profiler I found that can run compact framework and profile performance. The Microsoft provided profiler only profiles memory usage.

I started by profiling features in isolation, starting with the offline functionality. The reason I started here is because the data access is affected by the offline functionality. Secondly I start to test the user interface.

After some profiling I noticed a single method, which took between 1000 ms to 500 ms to execute. What was special about it is that I knew that this specific method was executed on the UI thread. It took some refactoring, but now it is changed to execute only if that part of the UI gets shown.

I also noticed that setting Form.Owner is an expensive operation, so avoiding it seemed like a good idea. For me it meant checking if we actually need to set Form.Owner before setting it.

End result, now the UI is much faster. The refactoring I made affected roughly 75% of all views in the application.