Как программно получить размер страницы кэша процессора на С++?

Я хочу, чтобы моя программа считывала размер строки кэша процессора, на котором он запущен на С++.

Я знаю, что это невозможно сделать портативно, поэтому мне понадобится решение для Linux и другое для Windows (решения для других систем могут быть полезны для других, поэтому публикуйте их, если вы их знаете).

Для Linux я мог прочитать содержимое /proc/cpuinfo и проанализировать строку, начинающуюся с cache_alignment. Возможно, есть лучший способ привлечения вызова к API.

Для Windows я просто понятия не имею.

Ответ 1

В 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

Ответ 4

В Linux попробуйте библиотеку proccpuinfo, независимый от архитектуры C API для чтения/proc/cpuinfo