如果你自己做计算,你将得到和性能监视器相同的计算值。
速率性能计数器
在我们的示例中,我们现在想找出‘MyFunction’相对于时间的比率。我们想知道每秒钟被调用了多少次。因此,浏览server explorer,并添加‘rateofCountsPerSecond32’计数器如下面的图所示。当‘MyFunction’每次被调用,递增此计数器。
如果您运行的应用程序,你将能够看到“RateofMyFunctionCalledPerSecond”的值。下面是一个简单的报告,该报告显示运行15秒后计数器的速率数据。在这15秒中总调用次数为72次。因此,平均每秒调用5次‘MyFunction’。
剩下的性能计数器
我们还剩下百分比计数器和差异计数器,因为他们是非常简单和直接的,为了保持本文的焦点和特性,我在文中不再介绍这两种计数器
通过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系列。下面是全部的链接: