Оптимизация VI

Простейшие вопросы в области инженерной разработки
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Оптимизация VI

Сообщение Igor_G »

Всем добрый день,

Этот SubVI очень сильно тормозит работу программы.
На поиск и замену в String только 19000 значений у него уходит приблизительно 2 минуты. (Реальное число значений будет находиться где то между 250 тысячами и несколькими миллионами)

Как оптимизировать это маленькое чудо? :о(
Вложения
Tracezeit durch HH_MM_SS ersetzen.vi
(17.05 КБ) 143 скачивания
29.01.jpg
IORIK
adviser
adviser
Сообщения: 240
Зарегистрирован: 14 дек 2010, 20:46
Версия LabVIEW: 7.0; 8.2

Re: оптимизация VI

Сообщение IORIK »

Здравствуйте Igor_G,
без лицевой панели (без входной строки) трудно вам что-то подсказать.В диаграмме есть, по крайней мере, 2 шероховатости
1) зачем вы дублируете функцию "pick line"? результат то на выходе один и тот же. одну из них можно смело удалить.
2) объясните, зачем вы в функции "search & replace" на входную и поисковую строки подаете одно и то же. если исключить ее, результат не изменится.

убрав лишние элементы, вы ускорите выполнение подпрограммы
29_01.jpg
Да, и зачем дублировать ваше сообщение в другой теме? Хоть и на немецком, но это все-таки повтор.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5602
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 34 раза
Поблагодарили: 113 раз

Re: оптимизация VI

Сообщение IvanLis »

К сожалению 2011 версии не имею, так что попробовать возможности нет.
Но чисто визуально...
Pick Line Function обе SuibVI выполняют одинаковую операцию, так что одного клона можно убрать.
Судить о том, что происходит дальше не зная текстовой переменной сложно, но думаю можно использовать функции Scan From String Function и Format Into String Function. Так как подразумеваю, что все строки построены по аналогичной схеме.
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: оптимизация VI

Сообщение Igor_G »

IORIK писал(а):Здравствуйте Igor_G,
без лицевой панели (без входной строки) трудно вам что-то подсказать.В диаграмме есть, по крайней мере, 2 шероховатости
1) зачем вы дублируете функцию "pick line"? результат то на выходе один и тот же. одну из них можно смело удалить.
2) объясните, зачем вы в функции "search & replace" на входную и поисковую строки подаете одно и то же. если исключить ее, результат не изменится.

убрав лишние элементы, вы ускорите выполнение подпрограммы
29_01.jpg
Да, и зачем дублировать ваше сообщение в другой теме? Хоть и на немецком, но это все-таки повтор.
Это не повтор потому что есть возможность и желание услышать мнение как наших так и немецких коллег (они к сожалению русский пока не понимают ;о)

А теперь серьёзно по теме.
В принципе происходит следующие: SubVI ищет в Strig время в mS, как только время найдено заменяет его на время в Днях : Часах : Минутах : Секундах : милисекундах : микроседундах. После этого переходит к следующей строке в Strig и все повторяеться до тех пор пока время больше не будет найдено.

(1) С дублированием согласен. Уберу. Спасибо.
(2) если я "search & replace" уберу то куда я тогда воткну то что я в конце концов заменить должен? Т.е. replace см. вход "Zeit in HH:MM:SS (In)". Этот VI нужен.
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: оптимизация VI

Сообщение Igor_G »

IvanLis писал(а):Так как подразумеваю, что все строки построены по аналогичной схеме.
Да. Именно так. Ваш совет я попробую завтра.
Последний раз редактировалось Igor_G 29 янв 2012, 22:24, всего редактировалось 1 раз.
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: оптимизация VI

Сообщение Igor_G »

Igor_G писал(а):
IORIK писал(а):Здравствуйте Igor_G,

(1) С дублированием согласен. Уберу. Спасибо.
Убрал. Время работы не изменилось :о(
anda55
assistant
assistant
Сообщения: 149
Зарегистрирован: 19 янв 2012, 10:15
Версия LabVIEW: 2010-2012
Откуда: Киев
Контактная информация:

Re: Оптимизация VI

Сообщение anda55 »

NI когда то писал , что строковые операции занимают очень большое время выполнения
Выйдите по ссылке
память VI.png
память VI.png (8.08 КБ) 4163 просмотра
Там можно померять время выполнения каждой операции Вашего проекта
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Оптимизация VI

Сообщение mzu2006 »

Igor_G писал(а):Как оптимизировать это маленькое чудо? :о(
Начать надо с точного определения формата строки. Можете воспользоваться хоть нотацией Бекуса-Наура. Потом можно будет написать регулярное выражение и зациклить процесс. Для одного из возможных форматов строк я бы делал так:
Optim1.png
Основное время, сне кажется уходит на то, что для вставления данных назад Вы используете Search and Replace.
IORIK
adviser
adviser
Сообщения: 240
Зарегистрирован: 14 дек 2010, 20:46
Версия LabVIEW: 7.0; 8.2

Re: Оптимизация VI

Сообщение IORIK »

Igor_G,

Можно и так сделать. Правда я не уверен подойдет ли вам такой вариант, т.к. вы до сих пор не показали входные данные. :crazy:
fig2.jpg
На этом рисунке делается замена последнего элемента.
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: Оптимизация VI

Сообщение Igor_G »

Вначале - Большое спасибо всем за советы и прошу меня извинить, что не сразу ответил (приболел).
С таком обьемом строк мне приходится работать первый раз.
anda55 писал(а): Там можно померять время выполнения каждой операции Вашего проекта
Конечно я это вначале и сделал, что бы определить проблему.
[b]IvanLis и mzu2006[/b] писал(а):
Оказались правы - проблему создаёт прожорливый Search and Replace. Выход примениние Scan From String Function и Format Into String Function.
IORIK писал(а):Igor_G,
Можно и так сделать. Правда я не уверен подойдет ли вам такой вариант, т.к. вы до сих пор не показали входные данные.
Исходник: Trace Roti_sym.log
Конечный результат пока такой: _27.01.2012_22.33.33_Trace Roti_sym.xls
Вложения
_27.01.2012_22.33.33_Trace Roti_sym.xls
(1.09 МБ) 144 скачивания
Trace Roti_sym.rar
(116.22 КБ) 150 скачиваний
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5602
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 34 раза
Поблагодарили: 113 раз

Re: Оптимизация VI

Сообщение IvanLis »

Igor_G писал(а):Исходник: Trace Roti_sym.log
Конечный результат пока такой: _27.01.2012_22.33.33_Trace Roti_sym.xls
Это из серии "угадай что хочу!?".... :dntknw:
Нужно что получить?
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: Оптимизация VI

Сообщение Igor_G »

mzu2006
Как вы подключили к Input U32 String?
Вложения
Optim2.png
Optim2.png (33.96 КБ) 4105 просмотров
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: Оптимизация VI

Сообщение Igor_G »

IvanLis писал(а):
Igor_G писал(а):Исходник: Trace Roti_sym.log
Конечный результат пока такой: _27.01.2012_22.33.33_Trace Roti_sym.xls
Это из серии "угадай что хочу!?".... :dntknw:
Нужно что получить?
Именно поэтому сразу и не выкладывал, что такой вопрос возникнет.
В принципе то что в xls есть и надо получить.
Тормоза я описал уже.
Вы и mzu2006 сходу нашли, где собака зарыта.
Теперь нужно все только переделать.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Оптимизация VI

Сообщение mzu2006 »

Igor_G писал(а):mzu2006
Как вы подключили к Input U32 String?
Провод проходит под узлом. Это snipplet - вставьте и посмотрите.
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: Оптимизация VI

Сообщение Igor_G »

mzu2006 писал(а):
Igor_G писал(а):mzu2006
Как вы подключили к Input U32 String?
Провод проходит под узлом.
:о) ОК. Тогда понятно.
mzu2006 писал(а): Это snipplet - вставьте и посмотрите.
Спасибо. Узнал снова новое.
Ответить

Вернуться в «Для чайников»