Производительность кеша указателей на соседнюю память - PullRequest
0 голосов
/ 27 сентября 2019

Давайте предположим, что у меня есть std :: map фактических данных, хранящихся в непрерывной части памяти, которую я хочу перебрать, пропуская несколько элементов.У меня есть функция, собирающая вектор указателей на элементы карты.Мой вопрос таков: Будет ли итерация по этому списку указателей и следование им частым ошибкам в кэше? А теперь давайте предположим, что вся карта помещается в несколько строк кэша.

Редактировать: пример кода.Редактор фрагментов кода не работает на сенсорных устройствах, таких как мое, но я постараюсь отформатировать его в удобочитаемом виде.

int main() 
{
    std::map<unsigned int, MyStruct> map;
    //Fill this map with useful data.

    std::vector<MyStruct*> ptrvec; //vector of pointers to pass around. Will not be processed right here, that's just to simplify the example code

    for(MyStruct i : map)
    {
        if(/*some condition to select structs*/) 
        {
            ptrvec.push_back(&i);
        }
    }

    for(MyStruct* i : ptrvec)
    {
        //Do some processing on MyStruct
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...