如何以编程方式计算CPU利用率?

时间:2010-04-09 15:34:59

标签: c# entity-framework benchmarking

我有一个基准测试程序,用于计算持久性到Entity Framework 4.0的时间(以毫秒和滴答为单位)。有没有办法计算CPU负载?我猜我需要查询Windows以查找我的CPU频率,核心数等等。这听起来合适吗?如果是这样,.NET框架的哪个部分与查询系统有关?我在猜System.Diagnostics?

谢谢,

斯科特

3 个答案:

答案 0 :(得分:3)

您可以使用PerformanceCounter(用于系统加载)。

或者,更好:

var p = System.Diagnostics.Process.GetCurrentProcess();
var span = p.TotalProcessorTime;

您必须将其与壁垒时间联系起来以获得百分比。另请参阅UserProcessorTime。


编辑:

第二个想法,如果你想要进行基准测试,你不是要测量执行一段代码所花费的时间,例如System.Diagnostics.Stopwatch类吗?

答案 1 :(得分:3)

http://msdn.microsoft.com/en-us/library/3t90y2y1(v=VS.90).aspx

似乎是你在找什么

我发现此代码可能有所帮助:

using System.Diagnostics;
PerformanceCounter oPerf1 = new PerformanceCounter();
oPerf1.CategoryName = "Processor";
oPerf1.CounterName = "% Processor Time";
oPerf1.InstanceName = "0";
int I;
for (I = 0; (I <= 100); I++) {
    SomeListBox.Items.Add(oPerf1.NextValue);
    Threading.Thread.Sleep(20);
}

答案 2 :(得分:2)

您可以获得性能计数器数据,但使用性能分析工具肯定会更好。 CPU利用率本身并不是一个有用的衡量标准。你想知道代码中哪些是与其他位相比最慢的位,哪些是快速但被调用太多次等等。