性能计数器是什么?

3

性能计数器是什么,它们如何工作?它们是否只适用于Windows,还是操作系统级别的概念,在Linux等其他操作系统中也可用?

我该如何在我的.NET应用程序中使用它们来测量应用程序各部分的执行时间?

我搜索了一下,但惊讶地发现没有找到任何好的参考资料。

2个回答

2
性能计数器是可测量、可报告的指标,内核或应用程序可以向操作系统报告这些指标。例如CPU负载、内存使用、网络带宽等都是性能计数器的示例。它不仅仅基于硬件;一个Web服务器可以报告它正在处理多少会话,或者一个DB服务器可以报告连接数和每秒查询数。至少在Windows中,您可以为您的应用程序创建自己的性能计数器;如果您有一个服务器应用程序将输入文件处理成数据库,您可以让它报告其吞吐量以每秒文件数或KB / s为单位。您可以将服务器正常运行时间报告为连续小时或自安装以来的时间百分比。
如何访问或创建性能计数器将根据您的开发环境(语言、框架、库)和目标操作系统而异,但我想现代内核至少可以报告硬件性能数字。

1

.Net中的性能计数器是针对Windows特定的。我认为使用性能计数器来测量执行时间并不是一个好方法,这将使事情比必要的复杂。Visual Studio包含一个性能工具,如果你转到“查看-其他窗口-性能资源管理器”菜单,性能资源管理器窗口就会出现,然后你可以点击启动性能向导按钮。 另一种可能性是使用Stopwatch类,如果你的计算机有高分辨率计时器,它将使用它。

        Int64 nanoSecPerTick = (1000L * 1000L * 1000L) / Stopwatch.Frequency;
        Stopwatch timer = Stopwatch.StartNew();
        // execute the code that you want to time
        timer.Stop();
        Int64 nanoSec = timer.ElapsedTicks / nanoSecPerTick;
        // or if you don't need such fine grained timing:
        Int64 milliSec = timer.ElapsedMilliseconds;
        Console.Write("Elapsed time: " + nanoSec + "ns");

你提到的性能工具只在高级版或旗舰版中才有。 - adrianbanks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接