Какие аллокаторы или pmr ему надо подсунуть, чтобы при emplace_back новые поинтеры лежали подряд с предыдущими?
Короче, нужны танцы с бубном, чтобы сделать поинтеры в векторе более кеш-френдли
А в чем выигрыш то?
Есть гипотеза, что итерирование будет быстрее
Очень спорно. Лучше объекты расположить ближе.
Объекты, на которые указывают смартпоинтеры? Так вопрос ровно об этом
А не лучше будет создать шаред на вектор в таком кейсе? Ну вообще очевидно можешь заранее выделить кусок памяти подходящего размера и выдавать из него, но бтв на скорость итерации это никак не повлияет только если будешь смотреть что по указателю лежит, но это уже не просто итерация
Указатели и так всегда подряд, это же вектор. Вот то на что они указывают , может быть не подряд. Сделать легко - выделить заранее все объекты одним блоком, например , в vector или массиве, потом класть в shared . Ну и скорее всего ты занимаешься ерундой, поскольку это все охота на блох вместо оленя.
Но ведь вектор указателей и вектор объектов всеравно будут в разных участках памяти, и как итог при обращении к указателю мы дергаем один участок, и загружаем его в память процессора, далее идём по указателю в совсем другую область и загружаем в процессор другой уже кусок памяти (и получаем кеш мисс)
Да, это безусловно так. Я только не понимаю, что в этом страшного.
Обсуждают сегодня