Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1134141755
fast2
2005-12-09 18:22
2005.12.25
Как узнать номер текущей записи в Парадокс таблице?


8-1121870223
race1
2005-07-20 18:37
2005.12.25
RGB значение


9-1121961704
Conferno
2005-07-21 20:01
2005.12.25
Bump map - Specular Texture(GLScene)


2-1133944403
JTAG
2005-12-07 11:33
2005.12.25
Подскажите плз как остановить процесс передачи


5-1117790468
Никита
2005-06-03 13:21
2005.12.25
Как сделать чтобы компонент мог размещать на себе другие Контролы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский