flatten to string или variant to data
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
flatten to string или variant to data
Добрый день! Подскажите как лучше обмениваться данными между циклами (через flatten to string или variant to data). Хочу передавать изображение из одного в другой, используя очереди. Как будет быстрее и какие нюансы? (хочу попробовать библиотеку tasking 2 от Eugen Graf).
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: flatten to string или variant to data
Быстрее будет при помощи variant.
https://forums.ni.com/t5/LabVIEW/Varian ... -p/2497118
"...Variants transforms are typically faster than flatten/unflatten to string, so are more widely used. Variants can also have attributes, which flattened strings cannot.
However, LabVIEW classes and dynamic dispatch often provide a better solution, since they do not require any data conversion and are infinitely customizable. ..."
Variant Data in LabVIEW -- Mastering a Higher-Level Way to Work with Data
http://www.ni.com/white-paper/4998/en/
https://forums.ni.com/t5/LabVIEW/Varian ... -p/2497118
"...Variants transforms are typically faster than flatten/unflatten to string, so are more widely used. Variants can also have attributes, which flattened strings cannot.
However, LabVIEW classes and dynamic dispatch often provide a better solution, since they do not require any data conversion and are infinitely customizable. ..."
Variant Data in LabVIEW -- Mastering a Higher-Level Way to Work with Data
http://www.ni.com/white-paper/4998/en/
-
- doctor
- Сообщения: 2210
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 26 раз
Re: flatten to string или variant to data
Везде написано, что работа с Variant более медленная. Второе - несмотря на то, что Variant типа может прозрачно преобразовывать данные, он не способен преобразовывать сложные типы (кластеры, массивы и т.п). Тем более, что в любом случае надо делать преобразование с проверкой. Ну и плюс Variant хранит атрибуты. Т.е при отправке одного I32 размер посылки будет не 4 байта, а на порядок больше. В данном случае (с библиотекой Taskings2) тип данных контролируется кодом команды. В любом случае при работе с Variant, надо сначала его создать, заполнить атрибуты, а потом выделить данные и перевести их стандартные типы в Labview. При отправке в очередь данные и так копируются. Вообще непонятно, зачем работать с Variant.
upd. Для работы со строками и кластерами (которые обертываются в Variant и строку) разница по времени стремится к нулю.
upd. Для работы со строками и кластерами (которые обертываются в Variant и строку) разница по времени стремится к нулю.
-
IvanLis
- guru
- Сообщения: 5461
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 27 раз
- Поблагодарили: 86 раз
Re: flatten to string или variant to data
Быстрее всего, это без всяких преобразований.rushonda писал(а):Подскажите как лучше обмениваться данными между циклами (через flatten to string или variant to data). Хочу передавать изображение из одного в другой, используя очереди. Как будет быстрее и какие нюансы?
Тем более проблем с этим возникнуть не должно, очереди все типы "едят".
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: flatten to string или variant to data
По поводу "разница по времени стремится к нулю"
Победа varianta за явным преимуществом :)
Победа varianta за явным преимуществом :)
- Вложения
-
- Variant vs String Conversion.vi
- (22.42 КБ) 85 скачиваний
-
- professor
- Сообщения: 3391
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: flatten to string или variant to data
а если во втором тесте результат тоже отправить в выходной туннель (в стену как и в первом цикле), то время работы строковых преобразований ещё почти в два раза увеличится.Blackman писал(а):По поводу "разница по времени стремится к нулю"
Победа varianta за явным преимуществом :)
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: flatten to string или variant to data
Добавил проволоку на выходе Unflatten From String.
Результат дает повод пересмотреть отношение к применению функции в некоторых ситуациях.
Результат дает повод пересмотреть отношение к применению функции в некоторых ситуациях.
- Вложения
-
- Variant vs String Conversion.vi
- (22.52 КБ) 78 скачиваний
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: flatten to string или variant to data
Без проволоки компилятор вообще выкинул Unflatten From String из программы (т.к. не используется), а с проволокой он вынужден выполнять эту операцию. Так?
Хотя, error out же...
Или просто (не) учитывается время на выделение памяти под туннель.
Хотя, error out же...
Или просто (не) учитывается время на выделение памяти под туннель.
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: flatten to string или variant to data
Да. Если удалите проводник варианта, то получите еще быстрее. У меня на ноуте последний пример от Blackman-а для варианта за 55 мс. выполняется(если проводник с выходными данным от цикла отключим, то за 45-47). Для флаттена время от 700 с копейками до 1400 с копейками при отсутствии/наличии проводника.Или просто (не) учитывается время на выделение памяти под туннель.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: flatten to string или variant to data
У меня другой вопрос. Я внёс в цикл инициализацию входного кластера. По сути, мы имеем точно такое же количество преобразований. Но время между variant и flatten не особо отличается. Картинку прикрепляю. Что не так?
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- doctor
- Сообщения: 2210
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 26 раз
Re: flatten to string или variant to data
Предположу, что в реальном приложении нет разницы по временным ресурсам между этими двумя преобразованиями.Но время между variant и flatten не особо отличается. Картинку прикрепляю. Что не так?
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: flatten to string или variant to data
Borjomy_1, мне кажется, что дело в выделении памяти. Я не могу объяснить, почему вариант Blackman-а с регистрами и вариант, когда мы каждую итерацию подаём кластер в явном виде, так отличаются по производительности. В первом случае flatten очень отстаёт. Во втором случае разницы нет никакой.
Проецируем на реальный проект: скажите, кто-нибудь у себя в задачах делал 100000 итераций преобразований типов подряд? Поэтому согласен с предположением Borjomy_1, что в реальном проекте разница по времени будет неощутима.
Проецируем на реальный проект: скажите, кто-нибудь у себя в задачах делал 100000 итераций преобразований типов подряд? Поэтому согласен с предположением Borjomy_1, что в реальном проекте разница по времени будет неощутима.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: flatten to string или variant to data
Достаточно просто заменить сдвиговые регистры на туннели в программе Blackman'а, чтобы получить "чудесный" результат. С похожей мистикой я столкнулся здесь: сначала сделал простой входной туннель на For-цикле и подал туда массив. Получились совсем не радужные цифры в плане тайминга. Заменил на сдвиговый регистр - ситуация кардинально изменилась. Получилось так, что со сдвиговым регистром цикл крутился быстрее, чем с туннелем. Может, на туннель каждый раз новый блок памяти выделяется, а на регистр - один раз...Vitekkz88 писал(а):Я не могу объяснить, почему вариант Blackman-а с регистрами и вариант, когда мы каждую итерацию подаём кластер в явном виде, так отличаются по производительности.
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: flatten to string или variant to data
dadreamer, да, я сначала туннели сделал. Потом явно внёс в цикл кластер.
А на других типах данных не пробовали пример с мистикой? Скажем, не на числовых, а на строковых?
А на других типах данных не пробовали пример с мистикой? Скажем, не на числовых, а на строковых?
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 19 Ответы
- 2584 Просмотры
-
Последнее сообщение Artem.spb
-
- 3 Ответы
- 1717 Просмотры
-
Последнее сообщение Artem.spb
-
- 4 Ответы
- 1192 Просмотры
-
Последнее сообщение Юрий
-
- 4 Ответы
- 1063 Просмотры
-
Последнее сообщение BAS
-
- 4 Ответы
- 209 Просмотры
-
Последнее сообщение AndreyDmitriev