Страница 1 из 2
Максимальный размер буфера
Добавлено: 02 июн 2014, 10:23
Yuva
Есть еще вопрос.
Какого максимального размера буфер на сдвиговых регистрах можно создать в LabVIEW?
Re: Максимальный размер буфера
Добавлено: 02 июн 2014, 10:38
Borjomy_1
Для 32- разрядной Windows ограничение 2Гб, для 64 - неизвестно, но много ))))
Re: Максимальный размер буфера
Добавлено: 02 июн 2014, 12:09
Yuva
Спасибо!
Re: Максимальный размер буфера
Добавлено: 02 июн 2014, 13:29
dadreamer
Размер ограничен оперативной памятью, которую может выделить ОС для одного процесса, и это зависит не только от разрядности системы, но и от разрядности
:
http://www.labviewportal.org/viewtopic. ... 00&p=49533
И вот ещё ссылка
Memory Limits for Windows Releases, согласно ей получаем такие пределы:
On 32-bit versions of Windows, a single process can map and address no more than 3GB of virtual memory at time. In 64-bit versions of Windows, a 32-bit process can map and address no more than 4GB of virtual memory at a time.
For 64-bit processes, the amount is difficult to calculate as there are numerous overlapping limits that could apply depending on all kinds of factors. It's typically around 7TB.
Однако я с трудом представляю, какой нужно написать код и какие структуры пропускать через регистры, чтобы занять столько памяти. Да и в этом случае о стабильности приложения бессмысленно говорить,
может вылететь в любой момент при компиляции, запуске, завершении работы.
Re: Максимальный размер буфера
Добавлено: 02 июн 2014, 14:27
Yuva
Спасибо!
dadreamer писал(а):
Однако я с трудом представляю, какой нужно написать код и какие структуры пропускать через регистры, чтобы занять столько памяти.
Просто есть задача сохранять с платы поток данных, который передается по гигабитному изернету. Хотя я вот попробовал это, и большой скорости передачи что-то не заметил. За минуты 3 только 10 Мбайт передалось.
Re: Максимальный размер буфера
Добавлено: 02 июн 2014, 14:29
Yuva
Кстати и буфер по мере заполнения медленнее заполняться начинает
Re: Максимальный размер буфера
Добавлено: 02 июн 2014, 14:37
dadreamer
Yuva писал(а):есть задача сохранять с платы поток данных, который передается по гигабитному изернету.
А зачем вам абсолютно все данные? Вы же физически не сможете просмотреть и проанализировать такой объем информации. Для архивирования было бы достаточно некоторых средних значений за определенный промежуток времени. Да и в регистрах держать данные не стоит, а лучше писать сразу в файл.
Re: Максимальный размер буфера
Добавлено: 02 июн 2014, 14:42
Borjomy_1
Дело в том, что в процессе работы добавления создается новая копия данных. И чем больше, тем медленее этот процесс. Рекомендую выделить сразу необходимый объем памяти, создав перед циклом массив. В цикле делать операцию Replace Array Subset. Однако голову и хвост потребуется контролировать самому. Присмотритесь также к функции "Data Queue PtByPt".
Re: Максимальный размер буфера
Добавлено: 02 июн 2014, 14:53
Yuva
Ну в дальнейшем наверно так у будет. А сейчас пока нужно проверить скорость передачи данных. И какими с потерями или без потерь данные приходят.
Re: Максимальный размер буфера
Добавлено: 02 июн 2014, 15:00
Yuva
Borjomy_1 писал(а):Дело в том, что в процессе работы добавления создается новая копия данных. И чем больше, тем медленее этот процесс. Рекомендую выделить сразу необходимый объем памяти, создав перед циклом массив. В цикле делать операцию Replace Array Subset. Однако голову и хвост потребуется контролировать самому. Присмотритесь также к функции "Data Queue PtByPt".
Спасибо! Попробую
Re: Максимальный размер буфера
Добавлено: 03 июн 2014, 10:02
Yuva
Borjomy_1 писал(а):Дело в том, что в процессе работы добавления создается новая копия данных. И чем больше, тем медленее этот процесс. Рекомендую выделить сразу необходимый объем памяти, создав перед циклом массив. В цикле делать операцию Replace Array Subset. Однако голову и хвост потребуется контролировать самому. Присмотритесь также к функции "Data Queue PtByPt".
Добрый день!
То что Вы имели ввиду можно сделать таким способом или массив обязательно создавать перед циклом?
Буфер все равно медленно заполняется
Re: Максимальный размер буфера
Добавлено: 03 июн 2014, 10:55
Borjomy_1
В принципе и такой вариант с выделением памяти правильный. Но...
У вас есть преобразование.
Сначала вы фактически делаете копию регистра, потом преобразуете ее в строку. В результате на каждой итерации объем данных становится 3 х Накопленный массив. Есть необходимость на каждой итерации писать весь буфер функцией "save text"? Записывайте только принятые данные.
Re: Максимальный размер буфера
Добавлено: 03 июн 2014, 11:18
Yuva
Спасибо за замечание!
Переделал. Быстрее стало записывать. Без замедлений. Только вот скорость записи в буфер не столь велика. Если сохранять данные с UDP Read Fuction сразу в файл, то на много быстрее получается. Можно ли как то скорость записи в буфер увеличить?
Re: Максимальный размер буфера
Добавлено: 03 июн 2014, 16:43
dadreamer
Yuva писал(а):Можно ли как то скорость записи в буфер увеличить?
Можно сделать два параллельных цикла: получение данных и обработка (запись в единый буфер, вывод на экран, прочие действия), обмен данными между циклами организовать через очереди. Но если у вас в общем буфере сотни мегабайт, то всё равно
будет тормозить, чем больше данных, тем сильнее.
Re: Максимальный размер буфера
Добавлено: 05 июн 2014, 09:07
Yuva
Здравствуйте!
Спасибо за совет! А у Вас есть какие-нибудь примеры использования очереди? Пришлите пожалуйста, если можете))
Заранее благодарен!