flatten to string или variant to data

Простейшие вопросы в области инженерной разработки
rushonda
developer
developer
Сообщения: 289
Зарегистрирован: 26 фев 2016, 06:31
Версия LabVIEW: 18-20
Благодарил (а): 6 раз
Поблагодарили: 7 раз
Контактная информация:

flatten to string или variant to data

Сообщение rushonda »

Добрый день! Подскажите как лучше обмениваться данными между циклами (через flatten to string или variant to data). Хочу передавать изображение из одного в другой, используя очереди. Как будет быстрее и какие нюансы? (хочу попробовать библиотеку tasking 2 от Eugen Graf).
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: flatten to string или variant to data

Сообщение Borjomy_1 »

Лучше строкой, использовать Variant смысла нет никакого.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: flatten to string или variant to data

Сообщение Blackman »

Быстрее будет при помощи 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/
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: flatten to string или variant to data

Сообщение Borjomy_1 »

Везде написано, что работа с Variant более медленная. Второе - несмотря на то, что Variant типа может прозрачно преобразовывать данные, он не способен преобразовывать сложные типы (кластеры, массивы и т.п). Тем более, что в любом случае надо делать преобразование с проверкой. Ну и плюс Variant хранит атрибуты. Т.е при отправке одного I32 размер посылки будет не 4 байта, а на порядок больше. В данном случае (с библиотекой Taskings2) тип данных контролируется кодом команды. В любом случае при работе с Variant, надо сначала его создать, заполнить атрибуты, а потом выделить данные и перевести их стандартные типы в Labview. При отправке в очередь данные и так копируются. Вообще непонятно, зачем работать с Variant.

upd. Для работы со строками и кластерами (которые обертываются в Variant и строку) разница по времени стремится к нулю.
Вложения
Код команды делается типизированнй константой
Код команды делается типизированнй константой
тест преобразования.png
Аватара пользователя
IvanLis

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

Re: flatten to string или variant to data

Сообщение IvanLis »

rushonda писал(а):Подскажите как лучше обмениваться данными между циклами (через flatten to string или variant to data). Хочу передавать изображение из одного в другой, используя очереди. Как будет быстрее и какие нюансы?
Быстрее всего, это без всяких преобразований.
Тем более проблем с этим возникнуть не должно, очереди все типы "едят".
Im.png
Im.png (18.22 КБ) 5691 просмотр
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: flatten to string или variant to data

Сообщение Blackman »

По поводу "разница по времени стремится к нулю"
Победа varianta за явным преимуществом :)
Вложения
Var vs Str Conversion--FP.PNG
Var vs Str Conversion--BD.PNG
Variant vs String Conversion.vi
(22.42 КБ) 85 скачиваний
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: flatten to string или variant to data

Сообщение Artem.spb »

Blackman писал(а):По поводу "разница по времени стремится к нулю"
Победа varianta за явным преимуществом :)
а если во втором тесте результат тоже отправить в выходной туннель (в стену как и в первом цикле), то время работы строковых преобразований ещё почти в два раза увеличится.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: flatten to string или variant to data

Сообщение Blackman »

Добавил проволоку на выходе Unflatten From String.
Результат дает повод пересмотреть отношение к применению функции в некоторых ситуациях.
Вложения
Var vs Str Conversion--BD.PNG
Var vs Str Conversion--FP.PNG
Variant vs String Conversion.vi
(22.52 КБ) 78 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: flatten to string или variant to data

Сообщение dadreamer »

Без проволоки компилятор вообще выкинул Unflatten From String из программы (т.к. не используется), а с проволокой он вынужден выполнять эту операцию. Так?

Хотя, error out же... Изображение

Или просто (не) учитывается время на выделение памяти под туннель.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: flatten to string или variant to data

Сообщение Vitekkz88 »

Или просто (не) учитывается время на выделение памяти под туннель.
Да. Если удалите проводник варианта, то получите еще быстрее. У меня на ноуте последний пример от Blackman-а для варианта за 55 мс. выполняется(если проводник с выходными данным от цикла отключим, то за 45-47). Для флаттена время от 700 с копейками до 1400 с копейками при отсутствии/наличии проводника.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: flatten to string или variant to data

Сообщение Vitekkz88 »

У меня другой вопрос. Я внёс в цикл инициализацию входного кластера. По сути, мы имеем точно такое же количество преобразований. Но время между variant и flatten не особо отличается. Картинку прикрепляю. Что не так?
Вложения
Test2.png
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: flatten to string или variant to data

Сообщение Borjomy_1 »

Но время между variant и flatten не особо отличается. Картинку прикрепляю. Что не так?
Предположу, что в реальном приложении нет разницы по временным ресурсам между этими двумя преобразованиями.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: flatten to string или variant to data

Сообщение Vitekkz88 »

Borjomy_1, мне кажется, что дело в выделении памяти. Я не могу объяснить, почему вариант Blackman-а с регистрами и вариант, когда мы каждую итерацию подаём кластер в явном виде, так отличаются по производительности. В первом случае flatten очень отстаёт. Во втором случае разницы нет никакой.
Проецируем на реальный проект: скажите, кто-нибудь у себя в задачах делал 100000 итераций преобразований типов подряд? Поэтому согласен с предположением Borjomy_1, что в реальном проекте разница по времени будет неощутима.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: flatten to string или variant to data

Сообщение dadreamer »

Vitekkz88 писал(а):Я не могу объяснить, почему вариант Blackman-а с регистрами и вариант, когда мы каждую итерацию подаём кластер в явном виде, так отличаются по производительности.
Достаточно просто заменить сдвиговые регистры на туннели в программе Blackman'а, чтобы получить "чудесный" результат. С похожей мистикой я столкнулся здесь: сначала сделал простой входной туннель на For-цикле и подал туда массив. Получились совсем не радужные цифры в плане тайминга. Заменил на сдвиговый регистр - ситуация кардинально изменилась. Получилось так, что со сдвиговым регистром цикл крутился быстрее, чем с туннелем. Может, на туннель каждый раз новый блок памяти выделяется, а на регистр - один раз...
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: flatten to string или variant to data

Сообщение Vitekkz88 »

dadreamer, да, я сначала туннели сделал. Потом явно внёс в цикл кластер.
А на других типах данных не пробовали пример с мистикой? Скажем, не на числовых, а на строковых?
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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