Максимальный размер буфера
-
- beginner
- Сообщения: 32
- Зарегистрирован: 09 фев 2011, 14:19
- Версия LabVIEW: 2013
- Контактная информация:
Максимальный размер буфера
Есть еще вопрос.
Какого максимального размера буфер на сдвиговых регистрах можно создать в LabVIEW?
Какого максимального размера буфер на сдвиговых регистрах можно создать в LabVIEW?
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Максимальный размер буфера
Для 32- разрядной Windows ограничение 2Гб, для 64 - неизвестно, но много ))))
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Максимальный размер буфера
Размер ограничен оперативной памятью, которую может выделить ОС для одного процесса, и это зависит не только от разрядности системы, но и от разрядности : http://www.labviewportal.org/viewtopic. ... 00&p=49533
И вот ещё ссылка Memory Limits for Windows Releases, согласно ей получаем такие пределы:
И вот ещё ссылка 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.
-
- beginner
- Сообщения: 32
- Зарегистрирован: 09 фев 2011, 14:19
- Версия LabVIEW: 2013
- Контактная информация:
Re: Максимальный размер буфера
Спасибо!
Просто есть задача сохранять с платы поток данных, который передается по гигабитному изернету. Хотя я вот попробовал это, и большой скорости передачи что-то не заметил. За минуты 3 только 10 Мбайт передалось.dadreamer писал(а): Однако я с трудом представляю, какой нужно написать код и какие структуры пропускать через регистры, чтобы занять столько памяти.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Максимальный размер буфера
А зачем вам абсолютно все данные? Вы же физически не сможете просмотреть и проанализировать такой объем информации. Для архивирования было бы достаточно некоторых средних значений за определенный промежуток времени. Да и в регистрах держать данные не стоит, а лучше писать сразу в файл.Yuva писал(а):есть задача сохранять с платы поток данных, который передается по гигабитному изернету.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Максимальный размер буфера
Дело в том, что в процессе работы добавления создается новая копия данных. И чем больше, тем медленее этот процесс. Рекомендую выделить сразу необходимый объем памяти, создав перед циклом массив. В цикле делать операцию Replace Array Subset. Однако голову и хвост потребуется контролировать самому. Присмотритесь также к функции "Data Queue PtByPt".
-
- beginner
- Сообщения: 32
- Зарегистрирован: 09 фев 2011, 14:19
- Версия LabVIEW: 2013
- Контактная информация:
Re: Максимальный размер буфера
Ну в дальнейшем наверно так у будет. А сейчас пока нужно проверить скорость передачи данных. И какими с потерями или без потерь данные приходят.
-
- beginner
- Сообщения: 32
- Зарегистрирован: 09 фев 2011, 14:19
- Версия LabVIEW: 2013
- Контактная информация:
Re: Максимальный размер буфера
Спасибо! ПопробуюBorjomy_1 писал(а):Дело в том, что в процессе работы добавления создается новая копия данных. И чем больше, тем медленее этот процесс. Рекомендую выделить сразу необходимый объем памяти, создав перед циклом массив. В цикле делать операцию Replace Array Subset. Однако голову и хвост потребуется контролировать самому. Присмотритесь также к функции "Data Queue PtByPt".
-
- beginner
- Сообщения: 32
- Зарегистрирован: 09 фев 2011, 14:19
- Версия LabVIEW: 2013
- Контактная информация:
Re: Максимальный размер буфера
Добрый день!Borjomy_1 писал(а):Дело в том, что в процессе работы добавления создается новая копия данных. И чем больше, тем медленее этот процесс. Рекомендую выделить сразу необходимый объем памяти, создав перед циклом массив. В цикле делать операцию Replace Array Subset. Однако голову и хвост потребуется контролировать самому. Присмотритесь также к функции "Data Queue PtByPt".
То что Вы имели ввиду можно сделать таким способом или массив обязательно создавать перед циклом? Буфер все равно медленно заполняется
- Вложения
-
- Top_eth2.rar
- (43.54 КБ) 174 скачивания
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Максимальный размер буфера
В принципе и такой вариант с выделением памяти правильный. Но...
У вас есть преобразование. Сначала вы фактически делаете копию регистра, потом преобразуете ее в строку. В результате на каждой итерации объем данных становится 3 х Накопленный массив. Есть необходимость на каждой итерации писать весь буфер функцией "save text"? Записывайте только принятые данные.
У вас есть преобразование. Сначала вы фактически делаете копию регистра, потом преобразуете ее в строку. В результате на каждой итерации объем данных становится 3 х Накопленный массив. Есть необходимость на каждой итерации писать весь буфер функцией "save text"? Записывайте только принятые данные.
-
- beginner
- Сообщения: 32
- Зарегистрирован: 09 фев 2011, 14:19
- Версия LabVIEW: 2013
- Контактная информация:
Re: Максимальный размер буфера
Спасибо за замечание!
Переделал. Быстрее стало записывать. Без замедлений. Только вот скорость записи в буфер не столь велика. Если сохранять данные с UDP Read Fuction сразу в файл, то на много быстрее получается. Можно ли как то скорость записи в буфер увеличить?
Переделал. Быстрее стало записывать. Без замедлений. Только вот скорость записи в буфер не столь велика. Если сохранять данные с UDP Read Fuction сразу в файл, то на много быстрее получается. Можно ли как то скорость записи в буфер увеличить?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Максимальный размер буфера
Можно сделать два параллельных цикла: получение данных и обработка (запись в единый буфер, вывод на экран, прочие действия), обмен данными между циклами организовать через очереди. Но если у вас в общем буфере сотни мегабайт, то всё равно будет тормозить, чем больше данных, тем сильнее.Yuva писал(а):Можно ли как то скорость записи в буфер увеличить?
-
- beginner
- Сообщения: 32
- Зарегистрирован: 09 фев 2011, 14:19
- Версия LabVIEW: 2013
- Контактная информация:
Re: Максимальный размер буфера
Здравствуйте!
Спасибо за совет! А у Вас есть какие-нибудь примеры использования очереди? Пришлите пожалуйста, если можете))
Заранее благодарен!
Спасибо за совет! А у Вас есть какие-нибудь примеры использования очереди? Пришлите пожалуйста, если можете))
Заранее благодарен!