We have perused the ADS forums, the CFOpen forums and the Net to get some ideas of performance measurement tools for CE. We are having a bit of problem determining where massive (up to 4 seconds) of pause in our programs are coming from. We are using the GetTickCount which it appears that ADS has enabled for 1 ms in the GCP and we are experiencing sporadic “pauses” which tells me that something is getting higher priority. The GetTickCount method only really lets you track your own process (which as of now has no additional threads).
I noticed that Chris had mentioned “Kernel Tracker” under non .Net versions of CE and presume that is out of consideration. Is there a tool that you have included in the GCP bag of tricks that might let us track Threads and / or Processes?
Is there a possibility that the Touchscreen or audio drivers are eating the processor bandwidth?
It sounds like there is a high-priority thread in your application that is blocking execution. While the touch panel driver can sometimes be "hungry" when you are pressing the screen, it doesn't block for any more than a millisecond at a time.
You should probably take a look at Kernel Tracker, which is one of the many remote tools you will find under the Tools menu of eVC 4. You'll need to have established a debugging connection to use this application.
The Kernel Tracker will show on a plot how much time each thread is taking. You can change the time scale by orders of magnitude, allowing you to drill down to the system's time slice resolution (1ms on our current systems).
Kernel Tracker should allow you to see where your app is spending its time and let you determine where the offending thread lies.