title: How to use AverageTimer32 and AverageBase performance counters with System.Diagnostics.Stopwatch?
body: <p>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.</p>
  
  <p>What is my problem?</p>
  
  <p><strong>Code</strong></p>
  
  <pre><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 &lt; 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();
      }
  }
  </code></pre>
  
  <p><strong>Performance Counter Screenshot</strong>
  <a href="http://friendfeed-media.com/50028bb6a0016931a3af5122774b56f93741bb5c">Performance Counter Screenshot http://friendfeed-media.com/50028bb6a0016931a3af5122774b56f93741bb5c</a></p>