Оптимизация VI
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Оптимизация VI
Всем добрый день,
Этот SubVI очень сильно тормозит работу программы.
На поиск и замену в String только 19000 значений у него уходит приблизительно 2 минуты. (Реальное число значений будет находиться где то между 250 тысячами и несколькими миллионами)
Как оптимизировать это маленькое чудо? :о(
Этот SubVI очень сильно тормозит работу программы.
На поиск и замену в String только 19000 значений у него уходит приблизительно 2 минуты. (Реальное число значений будет находиться где то между 250 тысячами и несколькими миллионами)
Как оптимизировать это маленькое чудо? :о(
- Вложения
-
- Tracezeit durch HH_MM_SS ersetzen.vi
- (17.05 КБ) 143 скачивания
Re: оптимизация VI
Здравствуйте Igor_G,
без лицевой панели (без входной строки) трудно вам что-то подсказать.В диаграмме есть, по крайней мере, 2 шероховатости
1) зачем вы дублируете функцию "pick line"? результат то на выходе один и тот же. одну из них можно смело удалить.
2) объясните, зачем вы в функции "search & replace" на входную и поисковую строки подаете одно и то же. если исключить ее, результат не изменится.
убрав лишние элементы, вы ускорите выполнение подпрограммы Да, и зачем дублировать ваше сообщение в другой теме? Хоть и на немецком, но это все-таки повтор.
без лицевой панели (без входной строки) трудно вам что-то подсказать.В диаграмме есть, по крайней мере, 2 шероховатости
1) зачем вы дублируете функцию "pick line"? результат то на выходе один и тот же. одну из них можно смело удалить.
2) объясните, зачем вы в функции "search & replace" на входную и поисковую строки подаете одно и то же. если исключить ее, результат не изменится.
убрав лишние элементы, вы ускорите выполнение подпрограммы Да, и зачем дублировать ваше сообщение в другой теме? Хоть и на немецком, но это все-таки повтор.
-
IvanLis
- guru
- Сообщения: 5602
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 34 раза
- Поблагодарили: 113 раз
Re: оптимизация VI
К сожалению 2011 версии не имею, так что попробовать возможности нет.
Но чисто визуально...
Pick Line Function обе SuibVI выполняют одинаковую операцию, так что одного клона можно убрать.
Судить о том, что происходит дальше не зная текстовой переменной сложно, но думаю можно использовать функции Scan From String Function и Format Into String Function. Так как подразумеваю, что все строки построены по аналогичной схеме.
Но чисто визуально...
Pick Line Function обе SuibVI выполняют одинаковую операцию, так что одного клона можно убрать.
Судить о том, что происходит дальше не зная текстовой переменной сложно, но думаю можно использовать функции Scan From String Function и Format Into String Function. Так как подразумеваю, что все строки построены по аналогичной схеме.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: оптимизация VI
Это не повтор потому что есть возможность и желание услышать мнение как наших так и немецких коллег (они к сожалению русский пока не понимают ;о)IORIK писал(а):Здравствуйте Igor_G,
без лицевой панели (без входной строки) трудно вам что-то подсказать.В диаграмме есть, по крайней мере, 2 шероховатости
1) зачем вы дублируете функцию "pick line"? результат то на выходе один и тот же. одну из них можно смело удалить.
2) объясните, зачем вы в функции "search & replace" на входную и поисковую строки подаете одно и то же. если исключить ее, результат не изменится.
убрав лишние элементы, вы ускорите выполнение подпрограммы Да, и зачем дублировать ваше сообщение в другой теме? Хоть и на немецком, но это все-таки повтор.
А теперь серьёзно по теме.
В принципе происходит следующие: SubVI ищет в Strig время в mS, как только время найдено заменяет его на время в Днях : Часах : Минутах : Секундах : милисекундах : микроседундах. После этого переходит к следующей строке в Strig и все повторяеться до тех пор пока время больше не будет найдено.
(1) С дублированием согласен. Уберу. Спасибо.
(2) если я "search & replace" уберу то куда я тогда воткну то что я в конце концов заменить должен? Т.е. replace см. вход "Zeit in HH:MM:SS (In)". Этот VI нужен.
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: оптимизация VI
Да. Именно так. Ваш совет я попробую завтра.IvanLis писал(а):Так как подразумеваю, что все строки построены по аналогичной схеме.
Последний раз редактировалось Igor_G 29 янв 2012, 22:24, всего редактировалось 1 раз.
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: оптимизация VI
Убрал. Время работы не изменилось :о(Igor_G писал(а):IORIK писал(а):Здравствуйте Igor_G,
(1) С дублированием согласен. Уберу. Спасибо.
-
- assistant
- Сообщения: 149
- Зарегистрирован: 19 янв 2012, 10:15
- Версия LabVIEW: 2010-2012
- Откуда: Киев
- Контактная информация:
Re: Оптимизация VI
NI когда то писал , что строковые операции занимают очень большое время выполнения
Выйдите по ссылке Там можно померять время выполнения каждой операции Вашего проекта
Выйдите по ссылке Там можно померять время выполнения каждой операции Вашего проекта
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Оптимизация VI
Начать надо с точного определения формата строки. Можете воспользоваться хоть нотацией Бекуса-Наура. Потом можно будет написать регулярное выражение и зациклить процесс. Для одного из возможных форматов строк я бы делал так:Igor_G писал(а):Как оптимизировать это маленькое чудо? :о(
Основное время, сне кажется уходит на то, что для вставления данных назад Вы используете Search and Replace.
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
Re: Оптимизация VI
Igor_G,
Можно и так сделать. Правда я не уверен подойдет ли вам такой вариант, т.к. вы до сих пор не показали входные данные.
На этом рисунке делается замена последнего элемента.
Можно и так сделать. Правда я не уверен подойдет ли вам такой вариант, т.к. вы до сих пор не показали входные данные.

-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
Вначале - Большое спасибо всем за советы и прошу меня извинить, что не сразу ответил (приболел).
С таком обьемом строк мне приходится работать первый раз.
Конечный результат пока такой: _27.01.2012_22.33.33_Trace Roti_sym.xls
С таком обьемом строк мне приходится работать первый раз.
Конечно я это вначале и сделал, что бы определить проблему.anda55 писал(а): Там можно померять время выполнения каждой операции Вашего проекта
Оказались правы - проблему создаёт прожорливый Search and Replace. Выход примениние Scan From String Function и Format Into String Function.[b]IvanLis и mzu2006[/b] писал(а):
Исходник: Trace Roti_sym.logIORIK писал(а):Igor_G,
Можно и так сделать. Правда я не уверен подойдет ли вам такой вариант, т.к. вы до сих пор не показали входные данные.
Конечный результат пока такой: _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
- guru
- Сообщения: 5602
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 34 раза
- Поблагодарили: 113 раз
Re: Оптимизация VI
Это из серии "угадай что хочу!?"....Igor_G писал(а):Исходник: Trace Roti_sym.log
Конечный результат пока такой: _27.01.2012_22.33.33_Trace Roti_sym.xls

Нужно что получить?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
mzu2006
Как вы подключили к Input U32 String?
Как вы подключили к Input U32 String?
- Вложения
-
- Optim2.png (33.96 КБ) 4105 просмотров
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
Именно поэтому сразу и не выкладывал, что такой вопрос возникнет.IvanLis писал(а):Это из серии "угадай что хочу!?"....Igor_G писал(а):Исходник: Trace Roti_sym.log
Конечный результат пока такой: _27.01.2012_22.33.33_Trace Roti_sym.xls![]()
Нужно что получить?
В принципе то что в xls есть и надо получить.
Тормоза я описал уже.
Вы и mzu2006 сходу нашли, где собака зарыта.
Теперь нужно все только переделать.
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Оптимизация VI
Провод проходит под узлом. Это snipplet - вставьте и посмотрите.Igor_G писал(а):mzu2006
Как вы подключили к Input U32 String?
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
- assistant
- Сообщения: 126
- Зарегистрирован: 06 ноя 2011, 14:10
- Версия LabVIEW: 2012-2016
- Контактная информация:
Re: Оптимизация VI
:о) ОК. Тогда понятно.mzu2006 писал(а):Провод проходит под узлом.Igor_G писал(а):mzu2006
Как вы подключили к Input U32 String?
Спасибо. Узнал снова новое.mzu2006 писал(а): Это snipplet - вставьте и посмотрите.