Свяжая Кровь GameDevФорум

Универсальный менеджер памяти. (комментарии)

Страницы: 1 2 Следующая »
#0
20:27, 4 авг 2007

Универсальный менеджер памяти. (комментарии)

Это сообщение сгенерировано автоматически.

#1
20:27, 4 авг 2007

Может кто-нибудь что-нибудь-скажет? +/- ы? оценит?

#2
21:11, 4 авг 2007

Nekrom@NT
Обязательно надо переопределить все 3-и new и все 3 delete, иначе будут траблы при определённых стеченихя=)

#3
21:29, 4 авг 2007

>Может кто-нибудь что-нибудь-скажет? +/- ы? оценит?
А где собсно эти самые плюсы и минусы? в статье их нету, хотя автор обязан был их написать

И еще не понравилась привязка к своей либе, на кой? или это раскрутка своей либы? ;)

#4
7:55, 5 авг 2007

>Обязательно надо переопределить все 3-и new и все 3 delete, иначе будут траблы при определённых стеченихя=)
ясное дело, это в любой бумажке по плюсам написано. там был класс с многоточиями т.е. показана примерное использование.
>И еще не понравилась привязка к своей либе, на кой? или это раскрутка своей либы? ;)
Это штобы небыло тупого копипаста. Пусть прочитавший сам повторит, оно полезно для закрепления. Кроме-того исходники в стаье почти целиком из либы, мне было не до переправки.
>+/-
я имел ввиду плюсы минусы статьи а не менеджера.
>+/-
менеджера обязательно допишу.

#5
9:43, 5 авг 2007

Почему-то мне кажется, что стандартный менеджер памяти на стресс тесте покажет результаты куда лучше твоего в отношении "время/объем не эффект. исп. памяти":)
Зачем нужен поиск по map'у каждый раз?
Использование пулов для каких-то часто созд./удал. объектов должно быть явным, а не универсальным через менеджер памяти, в ост. же случаях достаточно new.

#6
9:52, 5 авг 2007

>Почему-то мне кажется, что стандартный менеджер памяти на стресс тесте покажет результаты куда лучше твоего в отношении "время/>объем не эффект. исп. памяти":)
Когда кажется надо:
а) креститься
б) проверять
На моей машине он быстрее.
Поиск по мапу быстрее, чем выделение куска нужного размера из фрагментированной памяти.
Поиском по мапу не брезгуют в GameProgrammingGems ПЕРВОМ томе, тогда процессоры были куда медленнее!

#7
9:53, 5 авг 2007

>Использование пулов для каких-то часто созд./удал. объектов должно быть явным
Ты про инкуапсуляцию слышал?

#8
10:17, 5 авг 2007

Nekrom@NT
а вместо map'a  hash_map юзать не пробовал? мож еще быстрей буит?

ЗЫ: жду описания +\- менеджера :)

#9
10:19, 5 авг 2007

Или если тебе совсем горит, то возможен такой вот импрувмент:
1) Делаем Managed шаблонным, т.е. при наследовании пишем так:

class Foo: public Managed<Foo> {};

2) заводим в нём статическую переменную-итератор.
3) однажды найдя по мапу позицию для размера объекта - сохраняем её.
4) юзаем позийию вместо поиска по мапу
5) радуемся.

#10
10:21, 5 авг 2007

eHomo
1) в конец статьи погляди
2) с хеш мапоп пожалуй да + см. предыдущий пост

#11
20:12, 5 авг 2007

Nekrom@NT
>На моей машине он быстрее.
я говорил про разумный баланс между скоростью и занимаемой памятью.

>Поиск по мапу быстрее, чем выделение куска нужного размера из фрагментированной памяти.
(кстати ни мап, ни хеш мап тут не  обязательны, пойдет обычный массив c binary search)
Да, быстрее, а какой в этом смысл? Ты собираешься тысячи раз в секунду использовать new?

>Ты про инкуапсуляцию слышал?
Всё должно быть в меру, и если у меня есть объекты для которых нужно чень много алокаций, те это специфический объекты, то я ни в коем случае не буду пользоваться универсальным способом выделения памяти типа new для каждого из них, а буду выделять и удалять память явно ручками из пула, просто и надежно.
Скорее всего это будет вообще структура, и боже упаси еще наследовать её от кого-то.

#12
5:17, 6 авг 2007

>я говорил про разумный баланс между скоростью и занимаемой памятью.
Баланс нормальный. Если совсем тяжко и большие пространствва остаются, то можно запоминать и в список св. памяти пихать, если слишком большое, то по степеням двойки дробить. Ешё можно прицепить "рейтинг" к каждой кучки св. памяти, тогда разбивать на наиболее "популярные" размеры.
>(кстати ни мап, ни хеш мап тут не обязательны, пойдет обычный массив c binary search)
зачем писать нечто своё не больно эффективное, когда есть STL, он по определению хай перфоманс, али вы, батенька, старовер?
>Да, быстрее, а какой в этом смысл? Ты собираешься тысячи раз в секунду использовать new?
Во время загрузки уровня почему бы нет, и я насиделся с кофе ожидая загрузки дарк мессайа, если мой двиг будет так долго грузить, йа павешусь при отладке!
>Всё должно быть в меру, и если у меня есть объекты для которых нужно чень много алокаций, те это специфический объекты, то я ни в коем случае >не буду пользоваться универсальным способом выделения памяти типа new для каждого из них, а буду выделять и удалять память явно ручками из >пула, просто и надежно.
И тем самым, при изменениях в архитектуре, тебе могёт потребоваться што-нибудь переписать, а там 5 разных специфик пулов, каждый под своё, и всем поменять что-ндь нужно, например ты дополнительный уровень абстракции ввёл, в итоге тип указателёй поменялся.
>Скорее всего это будет вообще структура, и боже упаси еще наследовать её от кого-то.
Ну у меня тоже, на самом-то деле наследования нет, у меня память выделяет менеджер ресурсов(нагло клянчит у менеджера памяти), а объект в неё создаёт объект класса, который знает што именно создавать.

#13
5:24, 6 авг 2007

И вообще, я вижу, мы бодаемся, не вокруг моей реализации или статьи, а тебе вообще не мила идея универсального менеджера памяти, мол некошерно.

#14
16:37, 8 авг 2007

И в чем преимущество, скажем, перед dlmalloc?

Страницы: 1 2 Следующая »
Свяжая Кровь GameDevФорум

Тема в архиве.