.Net最佳实践3:使用性能计数器收集性能数据 (5)

clip_image020

如果你自己做计算,你将得到和性能监视器相同的计算值。

clip_image021

速率性能计数器

在我们的示例中,我们现在想找出‘MyFunction’相对于时间的比率。我们想知道每秒钟被调用了多少次。因此,浏览server explorer,并添加‘rateofCountsPerSecond32’计数器如下面的图所示。当‘MyFunction’每次被调用,递增此计数器。

clip_image022

如果您运行的应用程序,你将能够看到“RateofMyFunctionCalledPerSecond”的值。下面是一个简单的报告,该报告显示运行15秒后计数器的速率数据。在这15秒中总调用次数为72次。因此,平均每秒调用5次‘MyFunction’。

clip_image023

剩下的性能计数器

我们还剩下百分比计数器和差异计数器,因为他们是非常简单和直接的,为了保持本文的焦点和特性,我在文中不再介绍这两种计数器


通过C#代码添加计数器

到现在我们已经通过server explorer来增加性能计数器。你还可以通过代码来添加计数器。第一件事就是,我们需要导入System.Diagnostics命名空间。

然后,我们需要创建‘CounterCreationDataCollection’ 对象。

CounterCreationDataCollection Mycounters = new CounterCreationDataCollection();

创建实际的计数器并指定计数器的类型。

CounterCreationData totalOps = new CounterCreationData(); totalOps.CounterName = "Numberofoperations"; totalOps.CounterHelp = "Total number of operations executed"; totalOps.CounterType = PerformanceCounterType.NumberOfItems32; Mycounters.Add(totalOps);

最后,在类别中创建计数器。下面的代码片断用于在‘MyCategory’类别中创建计数器。

PerformanceCounterCategory.Create("MyCategory","Sample category for Codeproject", Mycounters);

让我们用Performance counter helper来缓解我们的痛苦

写性能计数器创建代码是很痛苦的。使用performance counter helper可以帮助你缓解这种痛苦并使你的代码更小巧。你可以一下网站找到performance counter helper:

不要在产品中使用

是的,只在开发时使用性能计数器。如果您在产品中使用,确保有一个启用和禁用机制,否则会影响应用程序的性能。

总结

使用性能计数器测量应用程序的数据。
性能计数器包含多种类型,如瞬时,平均,速率等。

性能计数器不应该在产品中用到。如果用到了,确保有一个禁用机制。
性能计数器自身并不能进行测量,它需要应用程序提供数据,这样性能监视器才可以计算并显示的数据。


源代码

从这里你可以找到并下载上述性能计数器讨论的示例源代码。

其他最佳实践

最佳实践第1部分,请单击此处

最佳实践第2部分,请单击此处

最佳实践第4部分,请单击此处

最佳实践第5部分,请单击此处

我的FAQ文章

(译者:广告时间)

我明白这不是谈论我FAQ文章正确的地方。只是想称赞一下自己花费一年时间来完成的FAQ系列。下面是全部的链接:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzxfgy.html