我在应用程序内部实施检测,并遇到以下问题:Performance Performance Monitor中显示的值与PerformanceCounter中记录的值不一致。Windows性能监视器中的性能计数器计时器值不准确
我正在使用秒表记录方法执行的持续时间,然后首先将总毫秒记录为双精度,其次我将秒表的TimeSpan.Ticks传递给PerformanceCounter以记录在性能监视器中。
在性能监视器创建性能计数器:
var datas = new CounterCreationDataCollection();
datas.Add(new CounterCreationData
{
CounterName = name,
CounterType = PerformanceCounterType.AverageTimer32
});
datas.Add(new CounterCreationData
{
CounterName = namebase,
CounterType = PerformanceCounterType.AverageBase
});
PerformanceCounterCategory.Create("Category", "performance data",
PerformanceCounterCategoryType.SingleInstance, datas);
然后记录我检索收集和增量预初始化计数器:
_counters[counter].IncrementBy(timing);
_counters[counterbase].Increment();
...其中,“时间”是秒表的TimeSpan.Ticks值。
当这个运行时,秒的集合,即Stopwatch的TimeSpan的毫秒值显示一组值,但PerfMon中出现的是一组不同的值。
例如...记录以毫秒为单位的名单两个值:
23322.675,14230.614
显示内容在性能监视器图表有:
15.546,9.930
灿有人解释这一点吗?
@krisg - 你可以显示将条目放入毫秒列表的代码吗? – 2010-03-18 09:04:27