Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Трехмерный массив есть много памяти

13K
21 сентября 2006 года
DKain
26 / / 21.09.2006
Пишу прогу что-то вроде базы данных и у меня возникла проблема.
При объявлении массива "Baza(50000, 50, 20) as String" съедается порядка 500Мб оперативной памяти. Что самое ужасное :) это то, что это происходит сразу после объявления,а не по мере его наполения. А мне надо максимум 10-20 Мб. Любое из значений не будет превышать 300 символов, да и заполняться массив будет годами. А он так понимаю резервирует по максимуму и сразу. Обойти этот момент как-то иначе теперь трудновато, т.к. уже половина проги написана. Что можно сделать? Может как-то хитро ее объявить?
13K
22 сентября 2006 года
V.V.V.
59 / / 21.07.2006
[QUOTE=DKain]Baza(50000, 50, 20) as String[/QUOTE]
Ну ты даешь...
Во первых масив он на то и масив, что память под него выделяется сразу. Во-вторых зачем тебе такое количество данных в памяти?
Тебе надо держать все данные в файлах и лишь при надобности их читать. Но если ты все-таки хочешь чтобы ето все хранилось в оперативке - используй не масив а кучю (линейный список/heap...)

ЗЫ Строка это типа масив символов и его длину также можно указивать
13K
22 сентября 2006 года
DKain
26 / / 21.09.2006
[QUOTE=V.V.V.]используй не масив а кучю (линейный список/heap...)

ЗЫ Строка это типа масив символов и его длину также можно указивать[/QUOTE]

Вот это подробней можно? Я не так давно занимаюсь программированием.

Оно и хранится в файле, но он зашифрован. Если постоянно к нему обращаться, то это занимает много времени. Он у меня читается при загрузке, расшифровывается и держится в памяти.
Можно использовать ReDim, но все равно ведь со временем она съест эти 500 Мб. Есть ли что-нибудь типа ReDim'а, но контролирующее не количество переменных в массиве, а их длинну что ли?
Пробовал делать так: Private A(x,y,z) as string * 300, но от этого стало еще хуже.
Вообще как правильно решается такая задача?
13K
23 сентября 2006 года
V.V.V.
59 / / 21.07.2006
Вообще Redim это и есть высокоуровневая реализация кучи, но если оно тебе не подходит, то остается только читать из файла и обрабатывать прочитаную часть даных. Если же это занимает слишком много времени, то оптимизируй способ хранения даных в файле (структуру, индексы итп)
13K
24 сентября 2006 года
DKain
26 / / 21.09.2006
А еще можно данные в строках файла разделять какими-нибудь знаками:) Потом искать через mid. Я использовал "^" и "`", и сделал чтобы его нельзя было использовать пользователю... Тупо, но работает! Работает быстро и массив теперь можно использовать даже одномерный.
13K
28 сентября 2006 года
V.V.V.
59 / / 21.07.2006
[QUOTE=DKain]А еще можно данные в строках файла разделять какими-нибудь знаками:) Потом искать через mid. Я использовал "^" и "`", и сделал чтобы его нельзя было использовать пользователю... Тупо, но работает! Работает быстро и массив теперь можно использовать даже одномерный.[/QUOTE]
А еще есть такая штука как XML (необязательно строгое следование протоколу, да и необязательно XML, просто структура вложеных тегов) и хеши - для того чтоб пользователю файл оказался непригодным для чтения.
13K
28 сентября 2006 года
DKain
26 / / 21.09.2006
Я не знаю что это такое. Где можно пичитать? Только не в справке, т.к. у меня ее нет.
13K
28 сентября 2006 года
V.V.V.
59 / / 21.07.2006
Спроси у поисковика. Насчет ХМЛ это так к примеру, а хеши - тема посложнее
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог