我有一个基准测试程序,用于计算持久性到Entity Framework 4.0的时间(以毫秒和滴答为单位)。有没有办法计算CPU负载?我猜我需要查询Windows以查找我的CPU频率,核心数等等。这听起来合适吗?如果是这样,.NET框架的哪个部分与查询系统有关?我在猜System.Diagnostics?
谢谢,
斯科特
答案 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利用率本身并不是一个有用的衡量标准。你想知道代码中哪些是与其他位相比最慢的位,哪些是快速但被调用太多次等等。