Можно ли выделить память под массив объектов?

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Можно ли выделить память под массив объектов?

Сообщение FedeX » 14.12.2011 13:53:09

...а не ссылок на обьекты!
Сабж. Есть ли в паскале способ выделить память сразу под группу обьектов? Только не старых object-ов, а именно экземпляров какого-нибудь класса унаследованного от TObject? Просто есть задача где надо будет часто выделять память под переменное количество обьектов. Если это делать через TMyClass.Create();, то это будет отнсительно медленно да и память может сильно фрагментироваться. Хотелось бы их уметь создавать пачками штук по 1000 или больше как это можно делать в сишке, а потом инициализировать и использовать по надобности или даже сразу.. К томуже обьекты маленькие и использоваться будут последовательно, возможно получиться что-то вроде оптимизации под кеш процессора..

Добавлено спустя 7 минут 28 секунд:
Ой вроде уже нашел сам наводки:
http://www.gamedev.ru/community/delphin ... /?id=75098
http://www.kbasm.com/delphi-per-class-allocator.html
буду экспериментировать...
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Можно ли выделить память под массив объектов?

Сообщение Sergei I. Gorelkin » 14.12.2011 14:13:29

Только путем перекрытия методов NewInstance и FreeInstance. Нечто подобное я сколхозил в модуле dom, можно взять за основу. Заметного увеличения скорости не получилось.
Кстати, менеджер памяти не такой уж тупой и сам сложит объекты почти что в массив, при условии что InstanceSize не слишком большой.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Можно ли выделить память под массив объектов?

Сообщение FedeX » 14.12.2011 14:40:25

Спасибо, понятно
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Можно ли выделить память под массив объектов?

Сообщение Max Rusov » 14.12.2011 15:19:25

Еще можно сделать типа кэша объектов. При FreeInstance не удалять объект а помешать в кэш, а по NewInstance брать из кэша. Дает неплохую оптимизацию в некоторых сценариях, когда очень часто создается/уничтожается небольшое количество объектов...
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru