Re: быстрый new/delete
От: Умака Кумакаки Ниоткуда  
Дата: 29.11.22 22:07
Оценка:
Здравствуйте, maks1180, Вы писали:

M>Может есть готовое решение или что-то лучше ?


зачем все эти извращения? стандартный аллокатор и так работает очень быстро. как альтернативный готовый вариант можно взять tcmalloc

а вообще верхний предел количества аллоцируемых объектов?

например если их максимум 128к одновременно живых и хочется странного, то заводится фиксированный буфер на 128к объектов, и битовая карта, где бит — свободен объект или нет.

аллокация — поиск первого нулевого бита в битовой карте (и устанавливаем его в единицу, ессно) и возврат индекса этого бита, помноженного на размер объекта
деалокация — получаем индекс объекта в буфере (разность указателя на объект и указателя на начало буфера) и устанавливаем бит с этим индексом в 0

128к бит это 16к байт, целиком влезет в кеш L1 и сканироваться (аллоцировать один объект) будет за десяток наносекунд
нормально делай — нормально будет
Отредактировано 29.11.2022 22:14 Умака Кумакаки . Предыдущая версия . Еще …
Отредактировано 29.11.2022 22:13 Умака Кумакаки . Предыдущая версия .
Отредактировано 29.11.2022 22:09 Умака Кумакаки . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.