новичку нужен помощь

Простейшие вопросы в области инженерной разработки
Ответить
nazar
beginner
beginner
Сообщения: 14
Зарегистрирован: 23 ноя 2020, 10:38
Версия LabVIEW: 8.5
Благодарил (а): 1 раз
Контактная информация:

новичку нужен помощь

Сообщение nazar »

Изображение
Вложения
sled_sist.vi
(1.06 МБ) 41 скачивание
это зачем подскажите кто знает пж
это зачем подскажите кто знает пж
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: новичку нужен помощь

Сообщение zxc_pavel »

Это время одного цикла
Borjomy_1

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

Re: новичку нужен помощь

Сообщение Borjomy_1 »

Связано с тем, что использование Formula Node чрезвычайно замедляет выполнение программы. По сути это текстовый интерпретатор. Перемножение двух чисел с помощью операций умножения занимает несколько тактов процессора. А выполнение через Formula Node - сотни тактов, если не тысячи. Поэтому лучше отказаться от использования этой функции и написать вычисления с помощью функций из арифметической и тригонометрической палитры.
Аватара пользователя
alerm

Activity
leader
leader
Сообщения: 683
Зарегистрирован: 02 май 2012, 21:28
Награды: 1
Версия LabVIEW: 20
Благодарил (а): 59 раз
Поблагодарили: 9 раз
Контактная информация:

Re: новичку нужен помощь

Сообщение alerm »

Borjomy_1 писал(а): 19 окт 2022, 10:59 Связано с тем, что использование Formula Node чрезвычайно замедляет выполнение программы. По сути это текстовый интерпретатор. Перемножение двух чисел с помощью операций умножения занимает несколько тактов процессора. А выполнение через Formula Node - сотни тактов, если не тысячи. Поэтому лучше отказаться от использования этой функции и написать вычисления с помощью функций из арифметической и тригонометрической палитры.
Это уже не так, уже как несколько лет разницы особо нет.
Снимок экрана 2022-10-19 202113.png
Хотя может я где накосячил при сравнении :dntknw:
Аватара пользователя
dadreamer

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

Re: новичку нужен помощь

Сообщение dadreamer »

Borjomy_1 писал(а): 19 окт 2022, 10:59По сути это текстовый интерпретатор.
К счастью нет, а то была бы производительность как у Python Node или MathScript Node (т.е. ещё раза в три медленнее). Просто код FN не проходит через оптимизации, в отличие от G. Я об этом уже писал тут:
dadreamer писал(а): 05 фев 2020, 22:15>> Но почему FN уверенно лидирует? и откуда пошла мысль, что этот способ вычислений надо избегать?
В случае с FN раз на раз не приходится. И это в основном зависит от компилятора. Не слишком научный ответ, зато ближе всего к истине. Общий консенсус таков, что для узла FN диаграмма не проходит через конвертацию в DFIR (Dataflow Intermediate Representation), соответственно никакой декомпозиции и оптимизации не выполняется. Вероятно, текст парсится и сразу перегоняется в некие шаблонные блоки машинного кода. Часто такой код получается "рыхлым", т.е. присутствует много ненужных или сомнительных инструкций. Но иногда звёзды сходятся в одну линию и результирующий код получается довольно неплохим в плане производительности. Здесь то же самое немного другими словами: https://lavag.org/topic/16414-formula-n ... ent=101234 Я заметил, что это зависит не от сложности текстового кода в FN. Часто даже простой код формулы работает медленнее нативного: http://digital.ni.com/public.nsf/allkb/ ... A30050320E Внизу статьи есть примеры Formula Node.vi и Traditional.vi. Код на БД простейший, однако у меня получается 91 мс для FN и 17 для нативных узлов. С противоположной ситуацией мы как-то уже сталкивались: http://labviewportal.org/viewtopic.php?p=72440#p72440 Думаю, что именно эта неоднозначность при компиляции FN и является тем фактором, из-за которого NI и каждый второй юзер советуют использовать нативные функции. В их производительности можно хотя бы приблизительно быть уверенным, чего не скажешь о FN. Короче, мысли вслух, спускаться на ассемблерный уровень нет желания. :)
Кстати, прогнал тест из той темы на :labview: 2022, снова получил такие цифры:
2022-10-19_22-47-08.jpg
2022-10-19_22-47-08.jpg (38.62 КБ) 1019 просмотров
Так что ничего особо не изменилось.
alerm писал(а): 19 окт 2022, 20:24Это уже не так, уже как несколько лет разницы особо нет.
Попробуйте что-нибудь посложнее, например, циклы или работу с массивами :wink: На простых операциях FN работает приемлемо, иногда не хуже нативных узлов.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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