Вниз
Скачать: CL | DM;

Большой список строк   Найти похожие ветки 

 
ИМХО ©   (2004-01-16 07:21) [0]

TStringList, насколько мне известно, позволяет удерживает около 32 тысяч строк. Что посоветуют мастера для работы с бОльшим числом строк?


 
ИМХО ©   (2004-01-16 07:23) [1]

Позволяет удерживаТЬ.


 
MBo ©   (2004-01-16 07:27) [2]

нет, количество строк - MaxInt, т.е. 2 миллиарда, ограничение только в доступной вирт. памяти


 
Dmitriy O. ©   (2004-01-16 07:29) [3]

Таблицу Парадокс может удерживать до 1000000 строк.


 
Yuri-7 ©   (2004-01-16 07:32) [4]

array of string


 
ИМХО ©   (2004-01-16 07:52) [5]

Понял, спасибо.


 
Anatoly Podgoretsky ©   (2004-01-16 08:58) [6]

Тут недавно один жаловался, что очень медленно работает у него TStringList с 250 000 строками, очень огорчался, значит можно?


 
ИМХО ©   (2004-01-16 09:44) [7]

Я не видел ту ветку, к сожалению.

Но TMemo и TListBox имеют ограничения?


 
MBo ©   (2004-01-16 09:58) [8]

Да, имеют ограничения в Win9X. Но это не страшно, так как неразумно использовать видимый контрол для хранения/показа такого количества информации


 
ИМХО ©   (2004-01-16 10:06) [9]

Ясно, спасибо.


 
Тимохов ©   (2004-01-16 10:39) [10]

Одним из недостатков строк (ansistring) является большое потребление памяти. Для строки в 1 символ будет заниматься память равная 8+1+1: 8 - для служебной инфы, 1 - под символ, 1 -под символ окончания #0 строки (про последний не уверен, но не в этом суть). К тому же, насколько я понимаю из описания менеджера памяти, память под строки выделяется именно им, а это значит, еще 4 байта накладных расходов под каждый выделенный блок памяти. Итого 13 (возможно 12) байт накладных расходов для строки в один символ.

Вообще все зависит от задачи. Если строки последовательно создаются, но после создания не меняются, то можно хранить их все в едином массиву друг за другом с символом #0 в конце каждой и хранить, если нужен быстрый непоследовательный доступ к строкам, массив индексов начал строк. Если же не произвольный доступ не нужен, то и хранение списка начал можно опустить.

Можно посчитать выгоду:

Например, нужно хранить 1 000 000 строк длиной 10. В случае стандартных строк это будет (10+13)*1000000 примерно 23мб. В случае хранения в единой памяти это 4+(10+1)*1000000 примерно 11мб.

Но это так, мое ИМХО.
Повторюсь, все зависит от условий задачи.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
1-93466
Veon
2004-01-15 22:54
2004.01.29
Как нарисовать свой заголовок формы??


14-93681
Knight
2004-01-06 21:18
2004.01.29
А что в mpeg-ах?


6-93609
Barmutik
2003-11-15 20:30
2004.01.29
Избранное Internet Explorer


14-93641
Knight
2004-01-08 12:15
2004.01.29
Кто знаком с CorelDraw?


1-93572
Фагот
2004-01-19 09:52
2004.01.29
Текстовый файл




   Наверх