性能计数器平均计时器如何与其基准关联?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (27)

我正在为我的C#项目添加一些性能计数器,并正在创建一个新的PerformanceCounterCategory。在这个类别中,我想要有多个跟踪不同事物的计数器/定时器。我需要使用多个平均计时器,并试图了解在CoutnerCreationDataCollection中有多个计数器时,AverageBase计数器如何与正确的AverageTimer32计数器关联。

几个问题: 1.首先,这是一个正确的方法吗?我发现的样本都只有一个平均计时器。 2.如果第一个问题的答案是肯定的,那么我是否认为第一个AverageBase计数器添加到了AverageTimer32之后的集合中?我确实在文章中找到了需要按顺序添加的参考。

这是我想要做的一个例子:

var dataColl = new CounterCreationDataCollection
{
  new CounterCreationData
  {
    CounterType = PerformanceCounterType.AverageTimer32,
    CounterName = "AverageTime1",
    CounterHelp = "AverageTime1_Help"
  },
  new CounterCreationData           // Does this get linked to AverageTime1 simply
                                    // because it is being added after it?
  {
    CounterType = PerformanceCounterType.AverageBase,
    CounterName = "AverageTime1Base"
  },
  new CounterCreationData
  {
    CounterType = PerformanceCounterType.AverageTimer32,
    CounterName = "AverageTime2",
    CounterHelp = "AverageTime2_Help"
  },
  new CounterCreationData
  {
    CounterType = PerformanceCounterType.AverageBase,
    CounterName = "AverageTime2_Base"
  },
}

PerformanceCounterCategory.Create(
                            "MyCategoryName"
                            , "My Category Help"
                            , PerformanceCounterCategoryType.SingleInstance
                            , dataColl);
提问于
用户回答回答于

位置。需要基地址的计数器需要立即在定义列表中的基地址后跟踪。所以你的代码是正确的,你有两个AverageTimer32,每个都跟着AverageBase。

作为一个侧面说明,当你厌倦了一遍又一遍地输入相同的代码时,你应该考虑使用XSLT来生成性能计数器代码

扫码关注云+社区