powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как оптимальнее очищать список
6 сообщений из 6, страница 1 из 1
Как оптимальнее очищать список
    #39613355
Есть fItems:TList, содержащий ссылки на рекорды из кучи.
Нужно этот список очистить. С освобождение памяти кучи.

Код: pascal
1.
2.
3.
4.
  while fItems.Count > 0 do begin
    Dispose(fItems[0]);
    fItems.Delete(0);
  end;


или

Код: pascal
1.
2.
3.
4.
  while fItems.Count > 0 do begin
    Dispose(fItems[Pred(fItems.Count)]);
    fItems.Delete(Pred(fItems.Count));
  end;


или
Код: pascal
1.
2.
3.
4.
  for i := fItems.Count - 1 downto 0 do begin
    Dispose(fItems[i]);
    fItems.Delete(i);
  end;


или
Код: pascal
1.
2.
3.
  for i := 0 to fItems.Count - 1 do
    Dispose(fItems[i]);
  fItems.Clear;


?

Или еще как?
...
Рейтинг: 0 / 0
Как оптимальнее очищать список
    #39613357
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удаляемый список,

Последний вариант, очевидно
...
Рейтинг: 0 / 0
Как оптимальнее очищать список
    #39613464
DesWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удаляемый список,
Есть еще вариант.
Посмотри свойство у TList, OnNotify.
...
Рейтинг: 0 / 0
Как оптимальнее очищать список
    #39613475
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удаляемый список,

Не нужно постоянно удалять 0 элемент. Всё остальное годно.
Если нужна сверх скорость - то нужно по-другому организовать менеджмент памяти. Но я думаю, тебе оно не нужно.
...
Рейтинг: 0 / 0
Как оптимальнее очищать список
    #39613519
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUНе нужно постоянно удалять 0 элемент. Всё остальное годно.
Да ладно.
Миллион раз Delete(i) конечно лучше, чем миллион раз Delete(0), но всё равно намного хуже, чем 1 раз Clear.
...
Рейтинг: 0 / 0
Как оптимальнее очищать список
    #39613538
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

Однозначно сложно сказать
Delete(0) плох тем, что на каждый Delete будет копирование массива. А в случае Delete(i) копирования не будет. Для TList<T> реаллока массива не будет, для TList скорее всего тоже.

Перехватывать Notify тоже не лучшее решение. Однозначно из представленных - самый быстрый третий вариант. Но разница будет копеечная.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как оптимальнее очищать список
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]