-
Хотелось бы узнать, какие могут быть ограничения на экстремально большие объемы в PStrList? То есть чем, кроме имеющейся памяти ограничено количество элементов и объем внутреннего представления PStrList? Точно знаю, что до 850 000 элементов туда точно запихать можно :) А если больше? Есть ли какие-то ограничения, связанные с размером строки, в которой хранятся все элементы списка или количества его идентификаторов?
Меня интересуют примерно такие границы: около миллиона элементов и мегабайт так примерно 50 размер PStrList.Text :)
P.S. да, я в курсе существования баз данных, но хотелось бы узнать ответ именно на этот вопрос
-
я колом не пользуюсь, но подозреваю, что, как и везде, ограничения могут быть связаны лишь наличием свободной памяти
-
> ограничения могут быть связаны лишь наличием свободной памяти
Из опыта - не более 90% от свободной виртуальной памяти. ИМХО, своп не резиновый. А зачем тебе? Если хочешь таблицу в виде strlist, то есть готовый компонент на основе strlist
-
Дело не в таблицах, а именно в обработке огромных массивов данных. На тех же самых объемах раньше (Delphi 5, KOL где-то в районе 2.37) все прекрасно работало. При переходе на Delphi 7 + KOL 2.86 наблюдается следующий глюк: при использовании PStrList.Add() вылезает runtime error 203 - ошибка переполнения кучи при индексах в районе 160 000. Раньше то же самое до 850 000 работало точно. Возникает ощущение что как-то изменился механизм перераспределния памяти.
-
TLIST_FAST попробуйте, минимизирует число перевыделений памяти для списков. (Для таких объёмов замена system.dcu кстати не рекомендую, если только с USE_DELPHI_MEMORY_MANAGER - или как там этот символ звучит, давно не пользовался. А если вы не используете замену, то распределение памяти в самой Delphi однозначно изменилось, это же системная часть).
-
> TLIST_FAST попробуйте, минимизирует число перевыделений памяти для списков.
Владимир, огромное спасибо, в очередной раз выручили! Нет, замену не использую, но TLIST_FAST очень помогло.
|