在.NET/C#中取得CPU核心數
確定應用程式可用的CPU核心數對於最佳化效能至關重要。在.NET/C#中,有多種方法可以提取此資訊:
1. Environment.ProcessorCount
此屬性提供系統上邏輯處理器的數量。但是,它不區分物理處理器和超線程核心。
Console.WriteLine("逻辑处理器数量: {0}", Environment.ProcessorCount);
2. Win32_Processor
使用WMI(Windows管理規範),您可以存取有關處理器的更多詳細資訊:
實體處理器:
foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get()) { Console.WriteLine("物理处理器数量: {0}", item["NumberOfProcessors"]); }
核心數:
int coreCount = 0; foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_Processor").Get()) { coreCount += int.Parse(item["NumberOfCores"].ToString()); } Console.WriteLine("核心数量: {0}", coreCount);
3. 排除的處理器
此外,您可以使用Windows API呼叫來發現Windows中排除的處理器。以下程式碼顯示邏輯處理器的總數,包括被排除的處理器:
int deviceCount = 0; IntPtr deviceList = IntPtr.Zero; Guid processorGuid = new Guid("{50127dc3-0f36-415e-a6cc-4cb3be910b65}"); try { deviceList = SetupDiGetClassDevs(ref processorGuid, "ACPI", IntPtr.Zero, (int)DIGCF.PRESENT); for (int deviceNumber = 0; ; deviceNumber++) { SP_DEVINFO_DATA deviceInfo = new SP_DEVINFO_DATA(); deviceInfo.cbSize = Marshal.SizeOf(deviceInfo); if (!SetupDiEnumDeviceInfo(deviceList, deviceNumber, ref deviceInfo)) { deviceCount = deviceNumber; break; } } } finally { if (deviceList != IntPtr.Zero) { SetupDiDestroyDeviceInfoList(deviceList); } } Console.WriteLine("核心数量: {0}", deviceCount);
以上是如何在 .NET/C# 中檢索 CPU 核心計數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!