Перейти к содержанию
Fire Monkey от А до Я
  • 0

Список (массив) записей


Firemonkey

Вопрос

Господа, помогите пожалуйста подобрать структуру (стандартную дельфийскую или стороннюю) для моей задачи.

У меня будет большой список записей (records), в который будут постоянно добавляться новые элементы.

Сначала я подумал о динамическом массиве (array of records), но выяснилось, что SetLength с большими динамическими массивами работает не быстро (он сначала создает новый массив, а затем копирует в него элементы из старого). Пришла в голову мысль использовать TList из этого примера: https://stackoverflow.com/questions/5797368/delphi-tlist-of-records  (но совет старый, 2011 года).

Может есть другие эффективные по скорости подходы?

Заранее благодарен.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

а есть какие-то подробности? для чего этот список? и что значит "большой" ? 10 тыс и 10 млн оба немаленькие, но есть нюанс

опять же, есть ли необходимость искать элементы в нем? или нужно ли чтобы они были упорядочены?

это все важно

есть также сомнение, что действительно нужен одномоментно в памяти *действительно* большой кусок данных

Ссылка на комментарий
  • 0
1 час назад, krapotkin сказал:

а есть какие-то подробности?

Хорошая ремарка.

Поиск и сортировка списка не нужны.

Записей может до миллиона (и больше, возможно). Что нужно: добавление элементов в список, чтение (по индексу) и редактирование элементов.

Ссылка на комментарий
  • 0

тогда, думаю, вам нужно просто хранить все это богатство в какой-то (локальной?) БД

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

если нужно что-то найти, достать, обычная схема работы с моделью данных, сам список моделей обычно хранится в TYourClassList = TObjectList<TYourClass>

при необходимости загружаем туда, работаем, выгружаем оттуда

при этом выгрузка/загрузка становится независимой от хранения - хоть из интернета скачивайте

Ссылка на комментарий
  • 0

Весь список нужен, потому что на самом деле это дерево, которое нужно постоянно обходить.

Выгрузка/загрузка не нужна, потому что дерево временное, существует лишь в рамках одной процедуры.

Ссылка на комментарий
  • 0

вот программа выключилась. что стало с деревом? рассосалось?

дерево  - тем более нужен класс, хранящий ссылку на детей, скорее всего того же класса TYourClassList

все же просто как мычание. умножаете количество элементов на 8 байт, получаете примерный размер массива указателей на объекты
плюс к этому прикидываете размер самих объектов, и получаете количество памяти для хранения вашей структуры. ООООчень грубо, но пойдет..

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...