Comments on “Instrumentation in the .NET Compact Framework”

In response to Daniel Moth’s comments regarding my post Instrumentation in the .NET Compact Framework


We have cleaned up the counters a little since Beta 1. See the current snapshot of the counters in mscoree.stat below. This is bound to change a little, but we are getting close to the final set. Please post comments for suggestions for additional counters. My caveat is that some counters are difficult and/or too expensive. I.e. To calculate the number of floating point operations is both expensive at runtime and engineering-wise. Also, adding “counters” to get timing data is difficult and expensive. The main timing counter we have is GC latency. With regards to collecting mscoree.stat data for multiple apps, this work is done and will be available for v2 Beta 2. Instead of a file name mscoree.stat, it will be <appname>.stat so that multiple apps can save the data simultaneously.



Total Program Run Time (ms)                

App Domains Created                        

App Domains Unloaded                       

Assemblies Loaded                           

Classes Loaded                             

Methods Loaded


Closed Types Loaded                        

Closed Types Loaded per Definition         

Open Types Loaded                          

Closed Methods Loaded                      

Closed Methods Loaded per Definition       

Open Methods Loaded

Locks and Threads                        

Threads in Thread Pool                     

Pending Timers                             

Scheduled Timers                            

Timers Delayed by Thread Pool Limit        

Work Items Queued                          

Uncontested Monitor.Enter Calls            

Contested Monitor.Enter Calls


Peak Bytes Allocated (native + managed)    

Managed Objects Allocated                  

Managed Bytes Allocated                    

Garbage Collections (GC)                   

Bytes Collected By GC                      

Managed Bytes In Use After GC              

Total Bytes In Use After GC                 

GC Compactions                             

Code Pitchings                             

Calls to GC.Collect                        

GC Latency Time (ms)                       

Pinned Objects                             

Objects Moved by Compactor                 

Objects Not Moved by Compactor             

Objects Finalized                          

Boxed Value Types


Process Heap                               

Short Term Heap                            

JIT Heap                                   

App Domain Heap                            

GC Heap


Native Bytes Jitted                        

Methods Jitted                             

Bytes Pitched                               

Methods Pitched


Exceptions Thrown


Platform Invoke Calls                      

COM Calls Using a vtable                   

COM Calls Using IDispatch                  

Complex Marshaling                         

Runtime Callable Wrappers


Socket Bytes Sent                          

Socket Bytes Received


Controls Created                           

Brushes Created                             

Pens Created                               

Bitmaps Created                            

Regions Created                            

Fonts Created                              

Graphics Created (FromImage)               

Graphics Created (CreateGraphics)          


Yes, when I say “live view”, it is over-the-wire-every-second the counter information is transmitted to an app on the desktop. If the .NET CF app crashes, you would have the latest data, but not in the mscoree.stat file.


I do understand the importance of such tools and will work to provide this as soon as we can, but at this point it is still “hopefully in the .NET Compact Framework 2.0 timeframe”.




This posting is provided "AS IS" with no warranties, and confers no rights.

Comments (2)
  1. Daniel Moth says:

    CF 2.0 Performance Statistics revisited

Comments are closed.

Skip to main content