本文讨论我们如何使用性能计数器从应用程序收集数据。我们将先了解的基本知识,然后我们将看到一个简单的示例,我们将从中收集一些性能数据。
介绍: - 我的应用程序的性能是最好的,像火箭
让我们这篇文章从一个客户和开发人员之间的简短交谈开始。
场景1
客户:- 你们的应用程序的性能怎么样?
主观的开发者:- Well,它真的很快,它是最好的... huuh aaa ooh,它就像火箭一样。
场景2
客户:- 你们的应用程序的性能怎么样?
量化的开发者:- 使用2 GB RAM,xyz处理器和20000客户记录的情况下,客户屏幕在20秒内加载完成。
我肯定比第一个开发的第二个开发者看起来更有前途的。在这篇文章中,我们将探讨我们如何使用性能计数器来测量应用程序的性能。让我们开始计数1,2,3,4 ......
欢迎下载我的免费的500 Q&A电子书,内容涉及NET,ASP.NET,SQL Server,WCF,WPF,WWF@ . (译者:作者在原文中做了一些广告,作为对他劳动成果的尊重,我将照原文翻译)
感谢Javier和Michael
我真的没有才智来写一些关于性能计数器的东西。但阅读下面的文章中,我能对付着写一些东西了。因此,首先请允许我感谢这些人,然后我们再继续本文。
感谢Javier Canillas创建了performance counter helper,它确实简化了很多代码
感谢Michael Groeger精彩的文章,我从你的文章中摘取了计数器创建的代码
我也从以下文章中摘取了不少内容:
归根结底,它们是:计数,计算(calculate)和显示
任何性能评估的工作无外乎计数,计算和显示。例如,如果你要计算在内存中每秒处理多少分页,我们首先我们需要对处理的页面的数量和其间流逝的时间(多少秒)进行计数。一旦我们完成计数,我们就需要进行计算,如用分页数除以秒数。最后,我们需要显示我们的性能数据。
现在,我们知道这是一个3步骤的过程,即计数,计算和显示。计数的部分由应用程序来完成。因此,在计数阶段应用程序需要提供数据。请注意,数据不会被性能计数器自动检测到,而需要应用程序提供一些帮助。而计算和显示由性能计数器和监视器完成。
性能计数器不是魔术师
如果应用程序不提供计数器数据,性能计数器无法仅凭自身去衡量应用程序性能。性能计数器需要应用程序来提供性能数据用于衡量应用程序。换句话说,应用程序需要通过创建性能计数器对象来提供数据。
应用程序性能测量的类型
几乎所有的应用程序的性能测量属于以下六大类。
瞬时值:- 很多时候,我们只是要测量当前值。例如,我们希望衡量有多少客户记录已被处理,有多少RAM内存已被使用等,这些指标被称为瞬时值或者绝对值。性能计数器通过瞬时计数器支持这些类型的测量。
平均值:- 有时瞬间/当前值并不展现真实的情况。例如,只是说应用程序消耗1GB的空间是不够的。但是,如果我们能够得到某种内存消耗的平均数据,如1000个记录消耗的空间是10MB,也许你可以更深入了解应用程序里面发生了什么。性能计数器通过使用像AverageBase,AverageTimer32,AverageCount64等类型支持这些种类型的测量。