Здравствуйте, <Аноним>, Вы писали:
А>Лучше TList, т.к. он наращивает память кусками, эдакй кэш у него получается. А динамический массив каждый раз SetLength требует.
Зато обращение к элементу идет гораздо дольше (в общем случае), т.к. элементы могут быть как угодно раскиданы по памяти

Лучший вариант — написать свой собственный TList на базе массива, выделять память "большими" кусками и т.п.
Есть множество готовых реализаций таких списков. Одна из них в замечательной книге Бакнелла "Фундаментальные алгоритмы и структуры данных в Delphi"

Исходный код доступен на сайте издательства.
... По ушам лупит начальство