首页 文章

什么是性能指标?

提问于
浏览
3

什么是性能计数器以及它们如何工作?它们是Windows专用的还是操作系统级概念,也可以在Linux等上使用?

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

我用Google搜索,但令人惊讶的是没有找到任何好的参考资料 .

2 回答

  • 2

    作为一个概念,性能计数器是可测量的,可报告的度量标准,内核或应用程序可以向操作系统报告 . 认为CPU负载,内存使用,网络带宽等是性能计数器的示例 . 它不仅仅基于硬件; Web服务器可以报告它正在处理的会话数,或者数据库服务器可以报告连接数和查询数/秒 . 至少在Windows中,您可以为您的应用程序创建自己的应用程序;如果您有一个服务器应用程序将输入文件处理到数据库中,您可以让它以文件/秒或KB /秒为单位报告其吞吐量 . 您可以在连续的小时内报告服务器正常运行时间,也可以按安装后的时间百分比报告 .

    您如何访问或创建性能计数器将根据您的开发环境(语言,框架,库)和目标操作系统而有很大差异,但我不能想到现代内核至少无法报告硬件性能数据 .

  • 1

    .Net中的性能计数器特定于Windows . 我不认为使用性能计数器来衡量执行时间是一个很好的方法,它会使事情变得比我怀疑的更复杂 . Visual Studio包含一个性能工具,如果您转到View - OtherWindows - Performance Explorer菜单,则会出现性能资源管理器窗口,您可以单击“启动性能向导”按钮 . 另一种可能性是使用秒表类,如果您的计算机有一个,它将使用高分辨率计时器:

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

相关问题