创建一个新的System.Diagnostics.PerformanceCounter非常慢

时间:2012-07-23 12:13:35

标签: c# performancecounter

我有一个简单的监控应用程序,它从PerfMon计数器获取一些值。即使在本地计算机上进行测试,创建新的PerformanceCounter对象也需要30秒以上。

using System;
using System.Diagnostics;

namespace test_slow_perfmon
{
    class Program
    {
        static void Main(string[] args)
        {
            Stopwatch w = new Stopwatch();

            w.Start();
            PerformanceCounter c = new PerformanceCounter("PhysicalDisk", "Avg. Disk Read Queue Length", "_Total", "localhost");
            w.Stop();
            Console.WriteLine(string.Format("Creating a counter took {0}ms", w.Elapsed.TotalMilliseconds));
        }
    }
}

从中输出表示超过32秒来创建每个计数器。

我可以做些什么(如果有的话)来加速计数器的创建?

1 个答案:

答案 0 :(得分:3)

30秒对我来说听起来像是超时,这告诉我这可能是某种网络问题。

尝试使用the constructor that doesn't specify a hostname创建您的perfmon计数器,看看是否有帮助:

PerformanceCounter c = new PerformanceCounter("PhysicalDisk", "Avg. Disk Read Queue Length", "_Total");