Автор Тема: Менеджер памяти для двухтиповой системы  (Прочитано 14947 раз)

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Менеджер памяти для двухтиповой системы
« Ответ #15 : Сентябрь 19, 2014, 01:57:43 pm »
Ну да. То, что я предлагал, относилось к случаю, когда объекты приходится размещать часто. И мне даже казалось, что я об этом говорил, но сейчас поискал и не нашёл похожих фраз.

Но я не понимаю, откуда восьмикратное увеличение производительности. По моим прикидкам, на каждые шеснадцать блокировок системной шины для связного списка должно происходить девять блокировок для массива. Это меньше двух раз. Некоторые потери на конвейере в случае со связным списком. Даже если взять с запасом, то пусть будет итоговое увеличение производительности в три раза. А откуда остальные разы?

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: Менеджер памяти для двухтиповой системы
« Ответ #16 : Сентябрь 21, 2014, 06:53:40 pm »
Ну, для аллокации миллиона объектов по 64 байта когда указатели спрятаны в связном списке придётся зачитать эти самые 64 Мб памяти, а когда указатели лежат в массиве, то надо будет зачитать только этот 8 Мб массив, что в 8 раз быстрее.

Если арена небольшая, то можно ещё больше ускорить - вместо 8 байтных указателей хранить в массиве 4-х (или даже 3-х) байтовые смещения.