views:

332

answers:

3

I've got a native C++ application that I need to profile to diagnose performance issues. The only profiler I can find for WinCE is the Remote Call Profiler, which requires the application be built with the Platform Builder so the instrumentation hooks can be compiled in.

My application is built with VS2008. Any suggestions?

+1  A: 

Are you using special WinCE APIs or 3rd party libs? because you can try to compile your application for Win32 and on that platform you have much more profiling options.

Shay Erlichmen
+2  A: 

I haven't found a way to profile CE apps; I use a brute force approach. Here are my recommendations:

1) Avoid using divide and floating point operations in your time critical code since they're not native instructions of the older ARM processors. A simple integer divide turns into 100 clocks of runtime library code and floating point operations are even slower.

2) Write your "inner-loop" code in assembly language since the compiler doesn't do a great job.

3) Use the internal timer (GetTickCount has a resolution of 1ms on WinCE) to time your own functions.

4) Selectively enable/disable sections of your code to measure how much time each section takes.

Hope this helps, L.B.

BitBank
+1  A: 

I appreciate the answers. I have done some of both of the suggestions. However, I have since learned that I was incorrect. Applications build with VS2008 can be instrumented for use with Remote Call Profiler.

  1. Add /callcap to the compile step.
  2. Link in cecap.lib (from the Platform Builder)
Eric Farr