C ++でCPUキャッシュページサイズをプログラムで取得する方法
質問
プログラムでC ++で実行されているCPUのキャッシュラインサイズを読み取りたい。
これは移植性がないことを知っているので、Linux用とWindows用の別のソリューションが必要になります(他のシステムのソリューションは他のシステムに役立つ可能性があるため、知っている場合は投稿してください)。
Linuxの場合、/ proc / cpuinfoの内容を読み取り、cache_alignmentで始まる行を解析できました。たぶん、APIへの呼び出しを含むより良い方法があります。
Windowsの場合、私は単にわからない。
解決
Windowsの場合
#include <Windows.h>
#include <iostream>
using std::cout; using std::endl;
int main()
{
SYSTEM_INFO systemInfo;
GetSystemInfo(&systemInfo);
cout << "Page Size Is: " << systemInfo.dwPageSize;
getchar();
}
Linuxの場合
他のヒント
Win32では、 GetLogicalProcessorInformation
は SYSTEM_LOGICAL_PROCESSOR_INFORMATION
を返します。 CACHE_DESCRIPTOR
には必要な情報があります。
Linuxでは、/ proc /を読み取るためのアーキテクチャに依存しないC APIである proccpuinfoライブラリを試してください。 cpuinfo
少なくともSCO unixのように見えます( http:// uw714doc.sco.com/en/man/html.3C/sysconf.3C.html )にはsysconfの_SC_CACHE_LINEがあります。他のプラットフォームにも似たようなものがあるのでしょうか?
所属していません StackOverflow