PerformanceHelper for easy PerformanceCounter integration

Posted Thursday, April 19, 2007 12:26 PM by cromwellryan

In the Speedy Rewards team here we use custom PerformanceCounters quite extensively to monitor and trend our host systems.  You may not know, but our rewards program implements real-time host integration for transactions that are Id'ed as a SpeedyRewards member such that systems like the in-store kiosk, www.SpeedyRewards.com, and any other store you may soon visit can accurately reflect balance updates immediately.  With 1600+ stores doing this and a sub-1 second response time, we need to keep a close eye on things.

Today I was trying to do some preliminary performance profiling on our new WCF based messaging infrastructure.  To make my life a little easier, I put together a PerformanceHelper class that I actually modeling off the Tracer class found in the Enterprise Library 1.1.  To use it, you wrap a section of code you wish to monitor performance for with the following:

using(new PerformanceHelper(CATEGORY, "<BlockInstanceName>") )
{
    //...
}

This will provide you with a RateOfCountsPerSecond32 counter and an AverageTimer32 counter called "Operations/sec\<BlockInstanceName>" and "Average Time/Operation\<BlockInstanceName>" respectively.  You can download the PerformanceHelper class here and a sample project here

Feel free to use and abuse it, but be aware that this has not fully tested and may well contain bugs.  I provide NO warranty or guarantees, so don't come to me when your server blue-screens from a corrupt registry (not that I've ever done that).  Use at your own peril.

Filed under: ,

Leave a Comment

(required) 
(required) 
(optional)
(required)