.NET/C# の CPU コア数を取得します
アプリケーションで使用できる CPU コアの数を決定することは、パフォーマンスを最適化するために重要です。 .NET/C# では、この情報を抽出する方法が複数あります。
1. 環境.プロセッサ数
このプロパティは、システム上の論理プロセッサの数を提供します。ただし、物理プロセッサとハイパースレッド コアは区別されません。
<code class="language-C#">Console.WriteLine("逻辑处理器数量: {0}", Environment.ProcessorCount);</code>
2. Win32_プロセッサ
WMI (Windows Management Instrumentation) を使用すると、プロセッサに関する詳細情報にアクセスできます:
物理プロセッサ:
<code class="language-C#">foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get()) { Console.WriteLine("物理处理器数量: {0}", item["NumberOfProcessors"]); }</code>
コア数:
<code class="language-C#">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);</code>
3. 除外されるプロセッサ
さらに、Windows API 呼び出しを使用して、Windows で除外されたプロセッサを検出できます。次のコードは、除外されたプロセッサを含む論理プロセッサの合計数を表示します:
<code class="language-C#">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);</code>
以上が.NET/C# で CPU コア数を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。