Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以编程方式计算CPU利用率?_C#_Entity Framework_Benchmarking - Fatal编程技术网

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

C# 如何以编程方式计算CPU利用率?,c#,entity-framework,benchmarking,C#,Entity Framework,Benchmarking,我有一个基准测试程序,可以计算到EntityFramework4.0的持久性的时间(以毫秒和滴答为单位)。有没有办法计算CPU负载?我猜我需要查询Windows以了解我的CPU频率、有多少内核等。这听起来对吗?如果是,那么.NET framework的哪一部分与查询系统有关?我猜是系统。诊断 谢谢 Scott您可以使用PerformanceCounter(用于系统负载) 或者更好: var p = System.Diagnostics.Process.GetCurrentProcess(); v

我有一个基准测试程序,可以计算到EntityFramework4.0的持久性的时间(以毫秒和滴答为单位)。有没有办法计算CPU负载?我猜我需要查询Windows以了解我的CPU频率、有多少内核等。这听起来对吗?如果是,那么.NET framework的哪一部分与查询系统有关?我猜是系统。诊断

谢谢


Scott

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

或者更好:

var p = System.Diagnostics.Process.GetCurrentProcess();
var span = p.TotalProcessorTime;
你必须将其与墙时间联系起来才能得到一个百分比。另请参见UserProcessorTime


编辑:


再想一想,如果您想进行基准测试,您是否更愿意测量执行一段代码(例如System.Diagnostics.Stopwatch类)所花费的时间?

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

似乎就是你要找的

我找到的这段代码可能会有帮助:

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);
}
使用系统诊断;
PerformanceCounter oPerf1=新的PerformanceCounter();
oPerf1.CategoryName=“处理器”;
oPerf1.CounterName=“%Processor Time”;
oPerf1.InstanceName=“0”;
int I;

对于(I=0;(我需要测量系统上的总cpu时间,还是每个进程的cpu时间?嘿,Sander!我想要我的进程/线程的利用率…系统上cpu负载的性能计数器会给出错误的数据,因为其他进程在Windows上运行。+1,因为没有人使用perf mon,但它非常棒。有很多东西需要监视。你知道吗会认为随着循环的执行,进程中花费的处理器总时间会不断增加,但有时后面的操作显示的总时间会比前面的少!这是什么原因?@Scott,我无法重现。请检查基本情况,如时间跨度。uuu total_u毫秒(不是毫秒)。