質問

プログラムで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の場合

http://linux.die.net/man/2/getpagesize

他のヒント

Win32では、 GetLogicalProcessorInformation SYSTEM_LOGICAL_PROCESSOR_INFORMATION を返します。 CACHE_DESCRIPTOR には必要な情報があります。

Linuxでは、/ proc /を読み取るためのアーキテクチャに依存しないC APIである proccpuinfoライブラリを試してください。 cpuinfo

x86の場合、 CPUID 命令。グーグルで簡単に検索すると、win32およびc ++のライブラリが表示されます。インラインアセンブラでもCPUIDを使用しました。

その他の情報:

少なくともSCO unixのように見えます( http:// uw714doc.sco.com/en/man/html.3C/sysconf.3C.html )にはsysconfの_SC_CACHE_LINEがあります。他のプラットフォームにも似たようなものがあるのでしょうか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top