Оптимизация VI
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
Программа вылетает потому-что не достаточно RAM.
RAM-2GB
Обрабатываемый файл CAN-Bus-Log 24MB. Конвертирую его в 2D Array.
Windows использует для себя мах. 5% от 2GB.
Что делает LabVIEW с остатком RAM мне не совсем понятно.
Пробовал обрабатывать 2D Array через shift register (на первой передачи уже вылетает ее не заканчивая). И через Queue. Результат тот же.
Есть какие ни будь идеи, как эту проблему можно обойти?
Желательно без использования Inplace (не понимаю как ей правельно пользоваться).
Например перенаправлять использование памяти после загрузки RAM больше 50% на жеский диск??? как это сделать?
Или еще лучше программно освобождать RAM??? Как?
Или все же надо с Inplace разбираться?
RAM-2GB
Обрабатываемый файл CAN-Bus-Log 24MB. Конвертирую его в 2D Array.
Windows использует для себя мах. 5% от 2GB.
Что делает LabVIEW с остатком RAM мне не совсем понятно.
Пробовал обрабатывать 2D Array через shift register (на первой передачи уже вылетает ее не заканчивая). И через Queue. Результат тот же.
Есть какие ни будь идеи, как эту проблему можно обойти?
Желательно без использования Inplace (не понимаю как ей правельно пользоваться).
Например перенаправлять использование памяти после загрузки RAM больше 50% на жеский диск??? как это сделать?
Или еще лучше программно освобождать RAM??? Как?
Или все же надо с Inplace разбираться?
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
Вопрос я не до конца понял. Поэтому 2 ответа:mxdamage писал(а):Зачем помещать файл в память целиком?
(1) Потому что это обрабатываемый файл.
Дальнейшая работа идёт именно с ним. И он мне нужен целиком.
(2) Как по другому? В память помещаю не я, автоматически Labview. (Цитирую NI "
Функция которая обрабатывает данные, перенимает выделение памяти для данных. Если данные будут длительное время не использованны, тогда занимаемая ими память будет освобождена. Если данные записываються в Array или String происходит автоматическое выделение большего объема памяти для управления информацией.")
Именно поэтому и был вопрос о возможности управления памятью.
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
Анализ цитаты NI из VI- memory Requirements:
"Функция которая обрабатывает данные, перенимает выделение памяти для данных. Если данные будут длительное время не использованны, тогда занимаемая ими память будет освобождена. Если данные записываются в Array или String происходит автоматическое выделение большего объема памяти для управления информацией."
Второе предложение - как это понимать? T.e. информация будет потеряна? Ни когда такого не замечал. Очень не определенное на мой взгляд выражение - длительное время. Есть Timeout? Какой? Где?
Третье предложение - автоматическое выделение большего объема памяти. Насколько большего? Как этот выделенный объем памяти замерить? Когда конкретно он выделяется? И как им можно управлять?
"Функция которая обрабатывает данные, перенимает выделение памяти для данных. Если данные будут длительное время не использованны, тогда занимаемая ими память будет освобождена. Если данные записываются в Array или String происходит автоматическое выделение большего объема памяти для управления информацией."
Второе предложение - как это понимать? T.e. информация будет потеряна? Ни когда такого не замечал. Очень не определенное на мой взгляд выражение - длительное время. Есть Timeout? Какой? Где?
Третье предложение - автоматическое выделение большего объема памяти. Насколько большего? Как этот выделенный объем памяти замерить? Когда конкретно он выделяется? И как им можно управлять?
-
IvanLis
- guru
- Сообщения: 5602
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 34 раза
- Поблагодарили: 113 раз
Re: Оптимизация VI
Залейте файл данных и Вашу программу на какой-нибудь обменник, а ссылку здесь выложите.Igor_G писал(а):Программа вылетает потому-что не достаточно RAM.
RAM-2GB
Обрабатываемый файл CAN-Bus-Log 24MB. Конвертирую его в 2D Array.
Windows использует для себя мах. 5% от 2GB.
Что делает LabVIEW с остатком RAM мне не совсем понятно.
Не понятно как Вы обрабатываете данные, возможно у Вас много копий данных создается при обработке.
Это вроде не такой большой объем, должно все нормально быть.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
Вопрос по оптимизации поиска.
Стоит задача поиска в 2D Array String содержащей порядка 12 миллионов объектов.
Поиск по неограниченному числу поисковых слов (объектов) или их частей, как по позитивной так и по негативной логике.
String оптимирован почти до конца, но при таких объемах будет работать все равно не достаточно быстро. (Это можно уже сказать уверено).
Есть идея,
сконвертировать в начале всю строку в Binärcode. Поисковые слова конвертировать тоже в Binär. И поиск проводить естественно в Binär.
Есть предположение, что LabVIEW будет искать в Binär на много быстрее чем в String. И не смотря конвертирование туда и обратно будет большой выиграш по времени.
Делал кто нибудь что то подобное? Или это бредовая идея?
P.S. Вопрос резервирования памяти еще открыт ;о)
Стоит задача поиска в 2D Array String содержащей порядка 12 миллионов объектов.
Поиск по неограниченному числу поисковых слов (объектов) или их частей, как по позитивной так и по негативной логике.
String оптимирован почти до конца, но при таких объемах будет работать все равно не достаточно быстро. (Это можно уже сказать уверено).
Есть идея,
сконвертировать в начале всю строку в Binärcode. Поисковые слова конвертировать тоже в Binär. И поиск проводить естественно в Binär.
Есть предположение, что LabVIEW будет искать в Binär на много быстрее чем в String. И не смотря конвертирование туда и обратно будет большой выиграш по времени.
Делал кто нибудь что то подобное? Или это бредовая идея?
P.S. Вопрос резервирования памяти еще открыт ;о)
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Оптимизация VI
Про поиск: Возможно имеет смысл освежить Кнута? Или соответствующий раздел Википедии (http://en.wikipedia.org/wiki/Category:S ... algorithms)
ЕМНИП, одна из последних LV олимпиад была построение этакого поиска в распределенном варианте.
ЕМНИП, одна из последних LV олимпиад была построение этакого поиска в распределенном варианте.
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
Здесь Screenshot гл. VI с комментариями.IvanLis писал(а):Igor_G писал(а): Залейте файл данных и Вашу программу на какой-нибудь обменник, а ссылку здесь выложите.
Не понятно как Вы обрабатываете данные, возможно у Вас много копий данных создается при обработке.
Это вроде не такой большой объем, должно все нормально быть.
VI отвечающий за 2D Array выложен. Файл тоже. (Отсутствующие SubVI - косметические SubVI которые ни какого влияния на память не оказывают)
- Вложения
-
KonvertiereTabellendatei in 2D Array_15.02.12.rar
- (20.1 КБ) 125 скачиваний
-
Trace BPH_40_HexSym.rar
- (2.67 МБ) 132 скачивания
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
Я в танке. Освежить Кнута?mzu2006 писал(а):Про поиск: Возможно имеет смысл освежить Кнута? ....
ЕМНИП, одна из последних LV олимпиад была построение этакого поиска в распределенном варианте.
Просто это будет работать? Если да то буду пробовать. Нет надо думать что то другое.
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Оптимизация VI
http://ru.wikipedia.org/wiki/Искусство_программирования. Эти же алгоритмы расписаны в википедии по предыдущей ссылке. И один из них реализован на одной из прошлых олимпиад NI Russia,
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
Re: Оптимизация VI
Igor_G, покажите Screenshot подпрограммы, которая создает 2D массив строк, а также "Bild Header" и "Uhrzeit eigenfunc". Или сконвертите в версию 8.2.
Если в подпрограмме для выделения элементов из строки используется функция "Spreadsheet String To Array ", то в худшем случае у вас 2D массив будет состоять из 23 миллионов элементов. Максимально элемент строкового массива имеет около 80 символов = 80 байт. И, как мне кажется, менеджер памяти LV не будет выделять точное кол-во байт на каждый элемент массива.
ниже показан худший вариант, в диспетчере задач Win XP под LV у меня выделилось 400 Мб.
Если в подпрограмме для выделения элементов из строки используется функция "Spreadsheet String To Array ", то в худшем случае у вас 2D массив будет состоять из 23 миллионов элементов. Максимально элемент строкового массива имеет около 80 символов = 80 байт. И, как мне кажется, менеджер памяти LV не будет выделять точное кол-во байт на каждый элемент массива.
ниже показан худший вариант, в диспетчере задач Win XP под LV у меня выделилось 400 Мб.
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
Нет проблем.IORIK писал(а):Igor_G, покажите Screenshot подпрограммы, которая создает 2D массив строк, а также "Bild Header" и "Uhrzeit eigenfunc".
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
Освежить?mzu2006 писал(а):http://ru.wikipedia.org/wiki/Искусство_программирования. Эти же алгоритмы расписаны в википедии по предыдущей ссылке. И один из них реализован на одной из прошлых олимпиад NI Russia,
Не буду скрывать я и не знал о нем ;о)
За линк большое спасибо. Что я понял из быстрого прочтения, что идея стоящая. И работать действительно должна.
Значит будем пробовать.
Обложка третьего издания первого тома книги Кнута содержит цитату Билла Гейтса: «Если вы считаете себя действительно хорошим программистом…, прочитайте „Искусство программирования“ (Кнута)… Если вы сможете прочесть весь этот труд, то вам определённо следует отправить мне резюме».
Я это точно не осилю ;о). Да и Билла Гейтса уже на пенсии.
Какой из алгоритмов Кнута вы бы посоветовали? (т.е. что конкретно читать?)
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
ОСТОРОЖНО! Использование этого VI может привести к зависанию Win. или LabVIEW.
Сгенерирован экстра баг!
С этим VI я пытался доказать, что проблему создает не 2D Array String, a именно LabVIEW автоматическое резервирование памяти для shift register. Потом выяснилось, что аналогичная проблема есть и при использовании Queue.
VI сконвертирован в версию 8.2.
Сгенерирован экстра баг!
С этим VI я пытался доказать, что проблему создает не 2D Array String, a именно LabVIEW автоматическое резервирование памяти для shift register. Потом выяснилось, что аналогичная проблема есть и при использовании Queue.
VI сконвертирован в версию 8.2.
- Вложения
-
- Extra_Bug_KonvertiereTabellendatei in 2D Array_26.03.12_v.2_3.vi
- (26.36 КБ) 118 скачиваний
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
цитата:
LabVIEW 32-bit система поэтому она может получить мах. 4GB виртуальной памяти.
http://zone.ni.com/reference/en-XX/help ... ory_usage/
Это что значит мы умудрились 4GB забить? Круто. Только как ума не приложу. A что делать тем более.
Помогите понять!
LabVIEW 32-bit система поэтому она может получить мах. 4GB виртуальной памяти.
http://zone.ni.com/reference/en-XX/help ... ory_usage/
Это что значит мы умудрились 4GB забить? Круто. Только как ума не приложу. A что делать тем более.
Помогите понять!