我想要通过编码来衡量我在Web服务中的商业类性能。如何实现?
我想知道我的商业类使用了多少CPU来执行其操作,如果Web服务接收到多个同时服务调用,性能会如何变化。
我不想测量我的Web服务的性能;我只想知道我的商业类表现如何。
我的想法是:阅读一些博客后,我决定编写一些代码,创建一个
我想知道我的商业类使用了多少CPU来执行其操作,如果Web服务接收到多个同时服务调用,性能会如何变化。
我不想测量我的Web服务的性能;我只想知道我的商业类表现如何。
我的想法是:阅读一些博客后,我决定编写一些代码,创建一个
PerformanceCounter
,如下所示。从这段代码中,我可以在一个for
循环中创建多个线程。每个线程将调用我的类。在同一个for
循环中,我将在计数器实例上调用NextValue()
方法。System.Diagnostics.PerformanceCounter CpuCounter = new System.Diagnostics.PerformanceCounter();
CpuCounter.CategoryName = "Process";
CpuCounter.CounterName = "% Processor Time";
CpuCounter.InstanceName = Process.GetCurrentProcess().ProcessName;
问题:
- 这个方法正确吗?
- 我应该使用"Process"类别还是"Processor"类别?
- 如何获取性能数据以创建某些报告?例如,使用100个同时线程时,CPU使用率为70%,使用200个线程时,它会提高到90%等。
- 我的业务逻辑非常快。另一方面,
NextValue()
方法按照此博客中所述,每隔一秒才会给出正确的值。我该如何处理? - 有时,
NextValue()
方法给出的值超过100。这是否意味着CPU使用率超过了100%?(我认为,不应将此计数器的值解释为CPU的百分比使用率。我正确吗?)
注意:我使用的是Windows 7 premium和Intel Core i5处理器。这是我第一次使用性能计数器。因此,有些问题可能很幼稚。
Process.TotalProcessorTime
属性解决这个问题如何? - LearnerIntel core i7 2640M
),它只有2个核心和4个线程。然而,我的进程的性能计数器有时会给出超过800的“%处理器时间”值。这意味着第5点存在一些误解或错误。 - Learner