Форум: "Основная";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизДинамически подгружать данные в массив Найти похожие ветки
← →
Dima_dvp (2005-11-28 14:34) [0]Здаврсвуйте.
Разрабатываю программу, выводящую на экран информацию о сигналах, заранее записанную с АЦП.
Т.е. данные представляют из себя файл array of array of Integer
Причём сигналов не много. Велико количество кадров. Общий объём данных доходит до Гигабайта (10 каналов оцифрованные в течении ~15 минут с частотой 10КГц).
Задача простая - вывести осцилограмму всех сигналов на одной координатной сетке и обеспечить удобство его визуального анализа.
Возникла следующая проблема: открытие файла данных (его полная загрузка в пямять) занимает слишеком много времени. А с учётом нехватки физической памяти при больших объёмах, время открытие возрастает ещё на порядок.
Сейчас данные по каждому каналу тупо загружаются в array of Integer. Это удобно и просто, но не при таких объёмах.
Вопрос: Как мне организовать динамическую подгрузку данных из файла, при этом не лишаясь возможности обращатся к элементам ВСЕГО массива по индексам, как это было при полной загрузке в array of Integer?
Полагаю, что нужно организовать класс, который бы по индексу определял, есть ли данные в памяти или их нужно подргузить. При этом он также должен высвобождать не используемые в данный момент данные.
Или не так? Подскажите
← →
Котик-братик (2005-11-28 15:48) [1]MSDN "memory-mapped files"
PS: Гигабайт памяти это не так уж и много - около $100 и это в несколько раз дешевле чем используемый ADC :) и уж конечно меньше Вашей месячной зарплаты :)))
← →
Dima_dvp (2005-11-28 15:52) [2]А этот mapped создаст ощущение, что файл в памяти, а он на самом деле будет на диске? :-)
И действительно в памяти будут оказываться только те куски файла, к которым я чейчас обращаюсь?
← →
Leonid Troyanovsky © (2005-11-28 16:01) [3]
> Dima_dvp (28.11.05 15:52) [2]
> И действительно в памяти будут оказываться только те куски
> файла, к которым я чейчас обращаюсь?
Скажем так: в "памяти" будет находится то, что MapViewOfFile.
--
Regards, LVT.
← →
tesseract © (2005-11-29 10:10) [4]
> И действительно в памяти будут оказываться только те куски
> файла, к которым я чейчас обращаюсь?
Скажем так все exe файлы не копируются в память а проецируются в неё. Поэтому их лучше не удалять во время работы.
Алгоритм проецирования в память использует, тот же механизм что и файл подкачки. (C) М.Руссинович
← →
Deka © (2005-11-29 14:17) [5]Как я понял можно отобразить в память не весь файл, а какую-то часть. Остается только вовремя менять отображенные в память куски соотвествующие части файла.
← →
tesseract © (2005-11-29 20:45) [6]
> Как я понял можно отобразить в память не весь файл, а какую-
> то часть. Остается только вовремя менять отображенные в
> память куски соотвествующие части файла.
На сколько я понял нет. Отображается весь файл. Но считываются те куски к которым реально идёт запрос(как страницы в памяти)
← →
Джо © (2005-11-29 21:05) [7]
> [6] tesseract © (29.11.05 20:45)
>
> > Как я понял можно отобразить в память не весь файл, а
> какую-
> > то часть. Остается только вовремя менять отображенные
> в
> > память куски соотвествующие части файла.
>
> На сколько я понял нет. Отображается весь файл.
MapViewOfFile может отображать либо весь файл, либо заданную его часть (определенное кол-во байт, начиная с n-ой позиции).
← →
Deka © (2005-11-30 14:45) [8]Вот и я где-то читал про то, что можно отобразить только часть файла.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c