Что можно сделать с массивом массивов Классическая задача из игровой симуляции. Нужно отдать фоновым потокам снапшот игрового состояния, чтобы они крутили свою логику, пока основной поток считает тик. Берётся привычный vector>, на нём строится индекс «локация → сущности», и на маленьких данных всё летает. Потом историческая стратегия доживает до середины партии, объекты плодятся, и внезапно снапшот такой структуры на миллионе локаций начинает стоить дороже, чем вся работа, ради которой его затевали. Скопировать индекс стоит 90 мс, а полезный проход по нему всего 14. То есть работу распараллелили ради 14 миллисекунд и отдали 90 просто за право начать. Стандартные контейнеры тут разоряют на пустом месте, и виноват даже не объём памяти, а то, куда процессор вынужден прыгать за данными. Посмотрим, как ужать те же данные так, чтобы старт перестал съедать весь выигрыш.
- 18
- 6
- 5
- 3
- 2
- 2
- 2
- 2
- 1
- 1
- 1