When I execute the following program and look at the performance counter the results don't make sense to me. The average value is zero and the min/max values are ~0.4 when I would expect ~0.1 or ~100.
What is my problem?
Code
class Program { const string CategoryName = "____Test Category"; const string CounterName = "Average Operation Time"; const string BaseCounterName = "Average Operation Time Base"; static void Main(string[] args) { if (PerformanceCounterCategory.Exists(CategoryName)) PerformanceCounterCategory.Delete(CategoryName); var counterDataCollection = new CounterCreationDataCollection(); var avgOpTimeCounter = new CounterCreationData() { CounterName = CounterName, CounterHelp = "Average Operation Time Help", CounterType = PerformanceCounterType.AverageTimer32 }; counterDataCollection.Add(avgOpTimeCounter); var avgOpTimeBaseCounter = new CounterCreationData() { CounterName = BaseCounterName, CounterHelp = "Average Operation Time Base Help", CounterType = PerformanceCounterType.AverageBase }; counterDataCollection.Add(avgOpTimeBaseCounter); PerformanceCounterCategory.Create(CategoryName, "Test Perf Counters", PerformanceCounterCategoryType.SingleInstance, counterDataCollection); var counter = new PerformanceCounter(CategoryName, CounterName, false); var baseCounter = new PerformanceCounter(CategoryName, BaseCounterName, false); for (int i = 0; i < 500; i++) { var sw = Stopwatch.StartNew(); Thread.Sleep(100); sw.Stop(); Console.WriteLine(string.Format("t({0}) ms({1})", sw.Elapsed.Ticks, sw.Elapsed.TotalMilliseconds)); counter.IncrementBy(sw.Elapsed.Ticks); baseCounter.Increment(); } Console.Read(); } }
Performance Counter Screenshot Performance Counter Screenshot http://friendfeed-media.com/50028bb6a0016931a3af5122774b56f93741bb5c
The System.Diagnostics API contains a pretty subtle source of great confusion: System.Diagnostics 'ticks' are not the same as DateTime or TimeSpan 'ticks'!
If you use StopWatch.ElapsedTicks instead of StopWatch.Elapsed.Ticks, it should work.
The documentation contains more information about this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With