- Код: Выделить всё
// Тип - общая характеристика файла
TFileInfo = record
FileName: String;
Attr: Longint;
Size: Longint;
DateTime: TDateTime;
end;
Память при добавлении характеристики в список выделяется при помощи GetMem, а указатели хранятся в TList. Если список составляется для относительно небольших директорий (до 20000 файлов/директорий) все работает относительно быстро. Когда количество переваливает за 100000 - это просто несколько десятков файлов/директорий в секунду!
Как бороться с подобным поведением класса TList?
PS: Исходники тайной не являются, кому необходимо - отправлю по почте. Предназначены программы для мониторинга файловой системы. Компилируются как под win32 (исключая 9x/Me) так и под Linux, но я их пытаюсь использовать исключительно под Linux.
Все это тестируется на P4 2.8 GHz, 1GB RAM, 160 GB SATA HDD