|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.10.2011, 00:55 | #1 |
Регистрация: 01.09.2010
Сообщений: 3
|
Ищу самый быстрый способ работы с файлами
Здравствуйте, уважаемые форумчане.
Имею прибор, который с дикой скоростью (350 кГц частота дискретизации) передает измерения в компьютер. Пока время измерения было 1 мин. - делал динамический массив, информацию запоминал, а потом спокойно обрабатывал. Теперь попросили увеличить время до 5-ти минут. А комп то слабенький (Селерон 1,6 при памяти 256 МГб), виснет гад. Поделитесь, пожалуйста, опытом по таким вопросам: 1. Поможет ли сливание всего в файл? 2. Если да, то какой способ выбрать? Рассматриваю варианты: 1)просто запись блоками, 2)отображение в память; 3)объектная работа с файлами. В какой из способов рекомендуете внедряться, как в самый быстрый? Заранее вам благодарен. |
15.10.2011, 03:00 | #2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
http://www.delphibasics.ru/AssignFile.php или http://www.delphibasics.ru/Assign.php
http://www.delphibasics.ru/Assigned.php http://www.delphibasics.ru/ReWrite.php http://www.delphibasics.ru/Write.php http://www.delphibasics.ru/CloseFile.php или http://www.delphibasics.ru/Close.php не использовать потоков(Tstream)... Собственно TStream и основан на выше описанных методах. Как вариант создать свой буффер памяти размером ну 50 мб минимум. Данные с аппаратуры загоняются туда одним потоком, а второй поток успешно читает буфер и пишет в файл. Таким образом получается некий конвеер. Те. запись не на прямую(получил > записал) а (Получил > оставил в буфере > читаешь дальше[второй поток в этот момент загребает из буфера]). Получается что-то ввиде конвеера. И думаю, что таким образом система не будет очень сильно нагружаться. т.к. данные с аппаратуры > местечко в оперативе > отображение данных из оперативы в место на жостком диске. Думаю варятли возможно отображать данные прямо на hdd без исп. оперативной памяти. Последний раз редактировалось Человек_Борща; 15.10.2011 в 03:03. |
15.10.2011, 07:19 | #3 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
15.10.2011, 10:45 | #4 |
Регистрация: 01.09.2010
Сообщений: 3
|
Спасибо за ответы.
На счет Асма - че-то я очкую что не разберусь) А вот насчет буферирования - похоже что надо попробовать. Вот как я себе представляю: 1 делаю два буфера; 2 поток "приемник" по очереди их заполняет. В конце скидывает событие; 3 поток "сливатель" по событию записывает единым блоком каждый буфер в файл. Нужно ли с приоритетами тут мутить, или и так заработает? |
15.10.2011, 11:00 | #5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
нет не так. Если 2 буфера. какой смысл?
Инфа из одного в другой, сама не переместиться. один читает от начала второй пишет в конец. допустим если буфер размером в 50 мб, то оба потока хапают только по 25 мб. модно ещё сообщения между потоками запилить, чтобы первый не пытался читать пустой буфер ,а второй писать в переполненый. |
15.10.2011, 11:11 | #6 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
inputbuf:=buff1; outbuff:=buff2; заполняем buff1 сбрасываем buff2 потом делаем inputbuf:=buff2; outbuff:=buff1; и теперь заполняем buff2 а сбрасываем buff2 а программы ни о чем и не догадываются как работали с inputbuf outputbuff так и работают. ну конечно же надо следить за местом в этих буферах. собственно работает в основном прием данных. как только буфер заполнен переключаем буфера, инициируем сброс и продолжаем работу(прием).
программа — запись алгоритма на языке понятном транслятору
|
|
15.10.2011, 12:21 | #7 |
Регистрация: 01.09.2010
Сообщений: 3
|
Здается мне, что 1-н буфер, деленный на 2, это то же самое, что 2- буфера.
Но в целом дело ясное, буду пробовать |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Самый быстрый режим работы процессора | Tronix | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 32 | 29.07.2011 21:01 |
Самый простой способ работы с файлами | wwe2012 | Общие вопросы C/C++ | 4 | 28.03.2011 22:12 |
Самый быстрый браузер | Marsel737 | Софт | 31 | 30.08.2010 01:09 |
Самый быстрый способ получить изображение в заданном прямоугольнике? | TwiX | Мультимедиа в Delphi | 4 | 04.04.2010 10:08 |
Самый быстрый способ проверить прокси? | TwiX | Работа с сетью в Delphi | 6 | 15.02.2010 22:41 |