Сколько ресурсов требует подприбор?

Обсуждение, связанное с разработкой ПО верхнего уровня
Ответить
Sergei
interested
interested
Сообщения: 5
Зарегистрирован: 11 апр 2012, 10:25
Версия LabVIEW: 11
Контактная информация:

Сколько ресурсов требует подприбор?

Сообщение Sergei »

Здравствуйте. Работаю в LabView 2011. Использую в программе стрелочные подприборы (Knob, Gauge). Заметил, что при их использовании компьютеру не хватает ресурсов - программа притормаживает при работе. Если эти подприборы заменить на столбики (например Slide), то производительность заметно увеличивается. Подскажите, пожалуйста - где можно посмотреть какое количество ресурсов какой подприбор требует. Долго рылся в хелпе - не смог найти.
Заранее спасибо.
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Сколько ресурсов требует подприбор?

Сообщение Andrew Lunev »

Понятно, что чем сложней индикатор, тем больше ресурсов тратится на его обновление. Стрелку надо не просто передвинуть, как у Slide, а повернуть на определенный угол. Но я никогда не сталкивался с тем, чтобы не хватало ресурсов для перерисовки хоть десятка Gauge. Для современного компьютера это просто мизер. Скорее всего у вас что-то в коде или архитектуре программы не верно сделано. Сколько раз в секунду вы обновляете эти индикаторы? Такое может случиться только если обновление у вас происходит сотни или тысячи раз в секунду, понятно, что обновлять чаще нескольких раз в секунду смысла нет. Я обычно обновляю индикаторы 10 раз в секунду.
IgorTitov

Silver Bronze Автор
CLA
Сообщения: 15
Зарегистрирован: 17 ноя 2012, 22:54
Награды: 3
Версия LabVIEW: 2012
Контактная информация:

Re: Сколько ресурсов требует подприбор?

Сообщение IgorTitov »

Сама по себе разница между Knob/Gauge и слайдером в плане обновления настолько минимальна, что сильно сомневаюсь, что Вы бы это заметили при любом современном компьютере.
Они не могут потреблять ресурсы компьютера так, чтобы программа начинала притормаживать.
1) Почему Вы уверены, что это именно эти элементы потребляют ресурсы? Что говорит диспетчер задач и другие подобные средства? Где гарантия, что просто в это время не было параллельно другого "тяжёлого" процесса? Это же винда/мак, следовательно ОС сама определяет приоритетность тех или иных процессов.
2) Вы используете события или polling? Если polling (что уже само по себе скорее всего неправильно), то нет смысла опрашивать элементы управления чаще чем 10 раз в секунду.
3) Что показывает профилирование (Tools >> Profile >> Performance and Memory...)?
4) Такой информации ("какой элемент сколько потребляет") не найдёте.
5) А теперь - возможное решение Вашей проблемы.
а) Перерисовка интерфейса в LabVIEW осуществляется по слоям. Если элементы не пересекаются (особенно меняющиеся их части, такие как область графика у Waveform Graph/Chart/...), то интерфейс просчитывается и обновляется "в один подход". Если же Вы размещаете один динамический элемент на другом (они полностью или частично перекрываются), например Guage поверх графика, вот тогда разница может оказаться существенной и заметной (в зависимости от видеокарты, памяти и т.д., а также от скорсти обновления таких индикаторов, их размеров и сложности). Мера №1: проверьте что элементы управления и индикации не пересекаются.
б) Эта причина может также присутствовать в пункте (а), но сама по себе является независимой - просто может сильно ухудшить уже неправильно работающую программу. Итак, для контролов и индикаторов Вы можете задать одно из двух значений: Advanced >> Synchronous Display >> True/False. Если у Вас выбрано True, то Execution System, в которой выполняется данный VI, будет находиться в потоке UI до тех пор пока он (поток UI) не завершит отрисовку и не отдаст управление обратно коду. Если False, то UI не будет блокировать выполнение кода и обновление интерфейса будет происходить асинхронно. Данное замечание верно только для многопроцессорных систем, не буду вдаваться почему, но т.к. сейчас все они многопроцессорные, то стоит проверить. Мера №2: проверьте что Synchronous Display = False.
в) Большинство элементов интерфейса обновляются только когда их значение меняется. Однако, графики являются исключением - они обновляются на каждой итерации, даже если данные не изменились. В зависимости от скорости обновления, количества точек, размеров графиков и т.д. их производительность будет меняться очень сильно. Если Вы действительно столкнулись с такой проблемой, то выключите Autosize X/Y, anti-aliasing, сетки. И другие элементы, находясь в пределах Waveform Chart/Graph, тоже будут постоянно перерисовываться (пункт а).
--------------------------------------
Igor Titov, CLA
WebPager - плагин LabVIEW, который позволяет размещать лицевую панель на веб-странице (в том числе на Android, iPad, ...).
Labicom.net - реальные лаборатории в ВАШЕМ доме.
Helga
user
user
Сообщения: 89
Зарегистрирован: 14 мар 2010, 10:14
Версия LabVIEW: 9
Контактная информация:

Re: Сколько ресурсов требует подприбор?

Сообщение Helga »

Совсем недавно сделала фон текстового элемента (декорация) прозрачным. Программа загрузила PC на 100%. Еле нашла в чем проблема.
Sergei
interested
interested
Сообщения: 5
Зарегистрирован: 11 апр 2012, 10:25
Версия LabVIEW: 11
Контактная информация:

Re: Сколько ресурсов требует подприбор?

Сообщение Sergei »

Спасибо за ответы. Буду пробовать. Отпишусь по результатам...
Ответить

Вернуться в «Лицевая панель»