С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Неэпический
18112 / 10699 / 2062
Регистрация: 27.09.2012
Сообщений: 26,945
Записей в блоге: 1
1

Быстрый аллокатор

25.06.2015, 16:26. Показов 2743. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно, необходим аллокатор для быстрого выделения памяти под мелкие объекты, совместимый со стандартными контейнерами (std::list и std::vector) (например, какой-то пул объектов).

Какие предложения?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.06.2015, 16:26
Ответы с готовыми решениями:

Класс аллокатор
Какие требования к написанию класса Аллокатора?

Аллокатор в chrome
Всем привет, начал изучать исходники хрома, в аллокаторе, метод realloc должен возвращать nullptr...

Пишем аллокатор
дабы не захламлять и так уже захламленную тему про перегрузку операторов создаю новую тему,...

Кастомный аллокатор
Не уверен, что это "для начинающих", но этот раздел подходил больше всех. Итак, объясню вкратце...

9
Эксперт С++
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
25.06.2015, 16:33 2
гляньте в сторону:
C++
1
stdext::allocators::allocator_chunklist
хотя я вообще на самом деле особо профита не заметил.

можно ещё глянуть в сторону boost:: pool_allocator
1
Неэпический
18112 / 10699 / 2062
Регистрация: 27.09.2012
Сообщений: 26,945
Записей в блоге: 1
25.06.2015, 16:46  [ТС] 3
Цитата Сообщение от hoggy Посмотреть сообщение
можно ещё глянуть в сторону boost:ool_allocator
уже глянул.
C++
1
2
3
4
5
6
7
8
    for ( uint64_t x = 0 ; x < 100ull ; ++x )
    {
        std::vector < X , std::allocator<X> > vec ;
        for ( uint64_t i = 0 ; i < 3000000ull ; ++i )
        {
            vec.push_back( X() ) ;
        }
    }
Результаты:

std :: allocator - 10 сек.
boost :: fast_pool_allocator - 70 сек.
boost :: pool_allocator - 45 сек.

Поменял std::vector на std::list.

Результаты:

std :: allocator - 27 сек.
boost :: fast_pool_allocator - 40 сек.
boost :: pool_allocator - ждал 8 минут, надоело, убил процесс.

Добавлено через 2 минуты
Ах, да, нужно чтобы работал под линуксом, под виндой тоже желательно, но не обязательно.
2
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
25.06.2015, 18:15 4
Croessmah,
Loki пробовал?
Вот еще посмотри.
2
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
25.06.2015, 21:13 5
Стандартный аллокатор универсален. Чтобы создать аллокатор быстрее, нужно опираться на какие-то конкретные данные.
В данном случае мы знаем что объект небольшой, но этого, честно говоря, мало.
Может быть есть какая-то дополнительная информация? Например максимальное количество выделяемых объектов (если есть ограничение), является ли объект POD-типом, насколько объект небольшой и т.п.
1
Неэпический
18112 / 10699 / 2062
Регистрация: 27.09.2012
Сообщений: 26,945
Записей в блоге: 1
26.06.2015, 01:52  [ТС] 6
castaway, да я свой решил написать, под конкретную задачу.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
26.06.2015, 08:11 7
Цитата Сообщение от Croessmah Посмотреть сообщение
castaway, да я свой решил написать, под конкретную задачу.
Ну так я это и хотел предложить
0
Почетный модератор
Эксперт С++
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
26.06.2015, 10:51 8
Croessmah, ну а поделишься потом-то? Интересно.
0
Croessmah
26.06.2015, 11:55  [ТС]
  #9

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
Ну так я это и хотел предложить
ну так ты уже предложил :D

0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.06.2015, 13:32 10
Интересная тема, однако, непложо бы надыбать по этому поводу больше информации ссылок/литературы итп.

Цитата Сообщение от castaway Посмотреть сообщение
Например максимальное количество выделяемых объектов
Как оно соотносится с размером страницы памяти ...
0
26.06.2015, 13:32
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.06.2015, 13:32
Помогаю со студенческими работами здесь

Задача с собеседования (аллокатор памяти)
Вопрос звучит так: &quot;Напишите быстрый аллокатор памяти&quot; Как я его понимаю: можно пожертвовать...

Как написать пуловый аллокатор для работы с объектами
Здравствуйте! Подскажите как написать пуловый аллокатор для работы с объектами

быстрый xor
Нужно про-xor-ить биты в числе. Можно ли это сделать быстрее, чем u_char r = 0; for (i = 0; i &lt;...

Быстрый почтальон
Привет всем. Eсли сможете напишите код программы &quot;Быстрый почтальон&quot; на я.п. С\С++ Почтальону...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru