Как я могу получить скорость процессора и общий физический памяти в C #? - PullRequest
5 голосов
/ 10 июня 2010

Мне нужен простой способ проверить, насколько быстрым и быстрым является ЦП хост-ПК.Я пробовал WMI, однако код, который я использую

 private long getCPU()
 {
    ManagementClass mObject = new ManagementClass("Win32_Processor");
    mObject.Get();
    return (long)mObject.Properties["MaxClockSpeed"].Value;

 }

Создает исключение нулевой ссылки.Кроме того, запросы WMI немного медленные, и мне нужно сделать несколько, чтобы получить все спецификации.Есть ли способ лучше?

Ответы [ 3 ]

6 голосов
/ 10 июня 2010

http://dotnet -snippets.com / DNS / получить-The-процессор скорость в МГц-SID575.aspx

using System.Management;

public uint CPUSpeed()
{
  ManagementObject Mo = new ManagementObject("Win32_Processor.DeviceID='CPU0'");
  uint sp = (uint)(Mo["CurrentClockSpeed"]);
  Mo.Dispose();
  return sp;
}

ОЗУ можно найти в этом вопросе SO: Как получить общий объем ОЗУ компьютера?

2 голосов
/ 10 июня 2010

Вы должны использовать PerformanceCounter класс в System.Diagnostics

PerformanceCounter cpuCounter;
PerformanceCounter ramCounter;

cpuCounter = new PerformanceCounter();

cpuCounter.CategoryName = "Processor";
cpuCounter.CounterName = "% Processor Time";
cpuCounter.InstanceName = "_Total";

ramCounter = new PerformanceCounter("Memory", "Available MBytes");


public string getCurrentCpuUsage(){
            cpuCounter.NextValue()+"%";
}

public string getAvailableRAM(){
            ramCounter.NextValue()+"MB";
}
1 голос
/ 16 июня 2010

Многое о процессоре, включая его скорость в МГц, доступно по адресу HKEY_LOCAL_MACHINE \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor

Я использую 2 пакета Win7x64, и по какой-то причине WMI-запрос показывает неопределенное число при первом запуске кода и правильную частоту процессора при втором запуске?

Когда дело доходит до счетчиков производительности, я много работал с сетевыми счетчиками и получил точные результаты, и в итоге мне пришлось искать лучшее решение, поэтому я не доверяю им!

...