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.