【问题标题】:How do performance counter average timers get associated with their base?性能计数器平均计时器如何与其基数相关联?
【发布时间】:2011-01-26 00:21:38
【问题描述】:

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

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

这是我正在尝试做的一个示例:

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);

【问题讨论】:

    标签: c# .net performance performancecounter


    【解决方案1】:

    位置。需要基数的计数器需要紧跟定义列表中的基数。所以你的代码是正确的,你有两个AverageTimer32,每个后跟AverageBase。

    附带说明,当您厌倦了一遍又一遍地输入相同的代码时,您应该考虑Using XSLT to generate Performance Counters code

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 2011-06-19
      • 2018-09-11
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      相关资源
      最近更新 更多