要启动和运行性能计数器,最少需要多少C#代码?

我只想测量代码中两点之间的CPU周期数和/或时间。我浏览了Web上的所有华夫饼,但似乎比这种琐碎任务所需的代码要多得多。我只想快速开始测量并运行,然后将精力更多地放在我正在做的事情上。

最佳答案

我认为您不需要为此而设的绩效计数器。您是否需要比StopWatch更加合适的时间?非常准确。

Stopwatch watch = Stopwatch.StartNew();

// Do work

watch.Stop();
// elapsed time is in watch.Elapsed

但是,要回答您实际提出的问题:如果您只想查询现有计数器,这实际上很简单。这是一个完整的示例:
using System;
using System.Diagnostics;
using System.Linq;

static class Test
{
    static void Main()
    {
        var processorCategory = PerformanceCounterCategory.GetCategories()
            .FirstOrDefault(cat => cat.CategoryName == "Processor");
        var countersInCategory = processorCategory.GetCounters("_Total");

        DisplayCounter(countersInCategory.First(cnt => cnt.CounterName == "% Processor Time"));
    }

    private static void DisplayCounter(PerformanceCounter performanceCounter)
    {
        while (!Console.KeyAvailable)
        {
            Console.WriteLine("{0}\t{1} = {2}",
                performanceCounter.CategoryName, performanceCounter.CounterName, performanceCounter.NextValue());
            System.Threading.Thread.Sleep(1000);
        }
    }
}

当然,该过程将需要适当的权限才能访问所需的性能计数器。

关于c# - 最简单的性能计数器示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3896685/

10-14 00:41