我的代码的性能(性能计数器)

时间:2019-07-16 04:36:56

标签: c# performance backend performancecounter

环境

  • 操作系统:Windows 7
  • 框架:.Net框架4

更新#1 根据我的分析和几次全面测试。我发现这是让CPU突然达到高使用率的部分。

foreach (Process process in Process.GetProcesses())
{
    PerformanceCounter processorTimeCounter =
        new PerformanceCounter("Process", "IO Data Bytes/sec", 
          GetProcessInstanceName(process.Id), true);
        processID[processorTimeCounter] = process.Id;
    try
    {
        processorTimeCounter.NextValue();
        counterList.Add(processorTimeCounter);
    }
    catch (System.InvalidOperationException) { }
}

这部分我有4种方法,它们具有不同的PerformanceCounter。 使用的PerformanceCounter i包括% Processor TimeIO Data Bytes/secWorking Set% Processor Time

我以4种不同的方法进行测试,仅运行此部分(已在此之前和之后添加断点)我的应用的CPU使用率会突然增加。

更新#1

其他代码

public static string GetProcessInstanceName(int process_id)
{
    PerformanceCounterCategory cat = new PerformanceCounterCategory("Process");
    string[] instances = cat.GetInstanceNames();
    foreach (string instance in instances)
    {
        try
        {
            using (PerformanceCounter cnt 
               = new PerformanceCounter("Process", "ID Process", instance, true))
            {
                int val = (int)cnt.RawValue;
                if (val == process_id)
                    return instance;
            }
        }
        catch (InvalidOperationException) { }
    }
    return "";
}

App usage

请告知我是否可以提供更多信息,或者您是否有 任何问题。

0 个答案:

没有答案