性能计数器干扰他人

时间:2015-06-24 21:58:32

标签: c# windows performancecounter

我需要为应用程序定义性能计数器。我写了几个单元测试,以确保他们按预期工作。我有一个针对每种不同计数器类型的测试类,如AverageCounterTest(AverageCount64)或InstantaneousCounterTest(NumberOfItems64)或RateCounterTest(RateOfCountsPerSecond64)。当我单独运行它们时,它们会通过。如果我一起运行它们,由于计数器报告0值,大多数都会失败。

对于NumberOfItems64

,测试非常简单
counter.NextValue(); // sample first and reset the counter
int someValue = random.Next(int.MaxValue);
counter.IncrementBy(someValue);
float expected = someValue;
Assert.AreEqual(expected, counter.NextValue());

另一个例子可能是RateOfCountsPerSecond64

counter.NextValue(); // sample first and reset the counter
counter.IncrementBy(1);
Thread.Sleep(2000);
float expected = 1 / (float)2;
Assert.IsTrue(expected, counter.NextValue());

可能导致计数器报告0的原因是什么?我在每个测试中使用不同的性能计数器类别(随机Guid)来隔离它们。

0 个答案:

没有答案