Загрузка ЦП приложением
-
- beginner
- Сообщения: 40
- Зарегистрирован: 21 мар 2014, 14:09
- Версия LabVIEW: 2011
- Контактная информация:
Загрузка ЦП приложением
Разрабатываю различные программы в среде LV, после компилирую их в EXE. Заметил, что простенькая программка ненормально нагружает ЦП (50%). Быстрых циклов нету, приоритеты циклов определены, память не ест, обновление передней панели два-три раза в сек. Сейчас что бы определить кусок ресурсозатратного кода с помощью Diagram disable отключаю части ПО и смотрю на загрузку. Очень медленный и геморный процесс. Есть ли более удобный способ??? Про тулкит который позволяет мониторить использование памяти знаю- не то. В надстройке Tools...- perfomance and memory не нашел прямой связи между параметрами и загрузкой ЦП. И речь именно о загрузке ЦП скомпилированным приложением через RTEngine. Работа среды не рассматривается. Спасибо
-
alerm
- leader
- Сообщения: 683
- Зарегистрирован: 02 май 2012, 21:28
- Награды: 1
- Версия LabVIEW: 20
- Благодарил (а): 59 раз
- Поблагодарили: 9 раз
- Контактная информация:
Re: Загрузка ЦП приложением
VladosXPOM, поставьте небольшую задержку в циклы, всего скорее они имеются в программе.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Загрузка ЦП приложением
VladosXPOM, если вы не можете выяснить через Perfomance & Memory, в какой VI у вас жор процессорного времени, то скорее всего он в основной VI. И, как правило, он проявляется в циклах с нулевым таймаутом в функциях чтения из очереди, нотификатора, Event структуры и т.п. Но если объект (например queue) недействителен (например, не проинициализирован, либо при вызове VI он не был подключен), то таймаут все равно не поможет. функция ожидания в данном случае нового элемента очереди будет выполняться с ошибкой, но без задержки и получится нагрузка процессора. Это относится ко всем объектам, которые используют таймауты в функциях ожидания. Так что ищите.
-
- beginner
- Сообщения: 40
- Зарегистрирован: 21 мар 2014, 14:09
- Версия LabVIEW: 2011
- Контактная информация:
Re: Загрузка ЦП приложением
Быстрых циклов в программе нет. В каждом обязательно присутствует задержка. Кроме циклов чтения из очередейalerm писал(а):, поставьте небольшую задержку в циклы, всего скорее они имеются в программе.
Какая из колонок показывает потраченное процессорное время? СпасибоBorjomy_1 писал(а):,выяснить через Perfomance & Memory .
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Загрузка ЦП приложением
VladosXPOM, для начала укажите, какой процессор используется? Если процессор мощный, то кидайте исходик, будем разбираться.
Возможно заложена какая-то мощная обработка сигнала? Либо в приложении используются сторонние библиотеки. Возможно нагрузку даёт сбор данных по некоторому интерфейсу...Можно долго гадать.
Возможно заложена какая-то мощная обработка сигнала? Либо в приложении используются сторонние библиотеки. Возможно нагрузку даёт сбор данных по некоторому интерфейсу...Можно долго гадать.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Загрузка ЦП приложением
Хм.. вы открывали этот инструмент? По-английски написано: VI Time - это суммарное время выполнения всех запусков данной (без вызовов Sub VI внутри), Sub VI Time - тут семи пядей во лбу не надо, чтобы догадаться, что это время выполнения Sub VI, которые вызываются в процессе работы. если кликните на имя , то получите список вызываемых Sub VI с их статистикой. Total Time - это сумма двух предыдущих столбцов. #Runs - количество запусков данной . Поделив Total Time на #Runs получите среднее время выполнения одного запуска , это значение отображается в столбце AverageКакая из колонок показывает потраченное процессорное время?
И вообще. читайте справку. Там подробно все расписано.
-
Chupakabra
- professional
- Сообщения: 360
- Зарегистрирован: 21 янв 2009, 10:50
- Награды: 1
- Версия LabVIEW: 2015
- Откуда: Москва
- Поблагодарили: 4 раза
- Контактная информация:
Re: Загрузка ЦП приложением
А таймаут выставлен у блока чтения элемента из очереди?VladosXPOM писал(а): Быстрых циклов в программе нет. В каждом обязательно присутствует задержка. Кроме циклов чтения из очередей
-
- beginner
- Сообщения: 40
- Зарегистрирован: 21 мар 2014, 14:09
- Версия LabVIEW: 2011
- Контактная информация:
Re: Загрузка ЦП приложением
Выставлен конечно.Chupakabra писал(а):А таймаут выставлен у блока чтения элемента из очереди?
Разобрался в проблеме. Процессор жрала экспресс VI Elapsed time (использовалась во многих местах) и процесс окрашивания ячеек таблицы (за одну итерацию выборочно перекрашивались примерно 250 ячеек через Active cell-cell color по Ref ссылке). Написал свой Elapsed time, использующий TickCount и убрал цветовое выделение ячеек. Суммарная загрузка упала с 50% до 6 примерно. Спасибо за ответы
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Загрузка ЦП приложением
Как такое возможно? Там же простейший код используется. И она реентерантная.VladosXPOM писал(а):Процессор жрала экспресс VI Elapsed time (использовалась во многих местах)
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Загрузка ЦП приложением
Так что в итоге снизило загрузку процессора? Отсутствие перерисовки или Elapsed time? У меня подозрения на перерисовку конечно же. Ставьте DeferPanelUpdates, когда ячейки разукрашиваете. Должно помочь.VladosXPOM писал(а):Написал свой Elapsed time, использующий TickCount и убрал цветовое выделение ячеек. Суммарная загрузка упала с 50% до 6 примерно. Спасибо за ответы
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- beginner
- Сообщения: 40
- Зарегистрирован: 21 мар 2014, 14:09
- Версия LabVIEW: 2011
- Контактная информация:
Re: Загрузка ЦП приложением
Из Perfomance and memory по времени выполнения на первом месте subElapcedTime, на втором подприбор в котором крашу ячейки.
как я понимаю, оно приостанавливает обновление всей передней панели. А есть что-то подобное, но для остановки не панели, а таблицы или листбокса?Vitekkz88 писал(а): Ставьте DeferPanelUpdates
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Загрузка ЦП приложением
Это свойство блокирует перерисовку всей лицевой панели, в том числе и таблиц и прочих элементов. Отдельно для элементов такого вроде повернуть нельзя.VladosXPOM писал(а):DeferPanelUpdates как я понимаю, оно приостанавливает обновление всей передней панели. А есть что-то подобное, но для остановки не панели, а таблицы или листбокса?
См.: https://decibel.ni.com/content/docs/DOC-4519
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Загрузка ЦП приложением
Зачем? У Вас же GUI обновляется с определенным тайм-аутом, не? Или надо обновлять как можно чаще?А есть что-то подобное, но для остановки не панели, а таблицы или листбокса?
Ставьте на весь GUI, тормоза с отрисовкой пропадут. И верните как было ElapcedTime, проверьте результат. Интересно же)
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Загрузка ЦП приложением
Оформите работу с (G)UI в отдельном цикле/потоке, а в цикле логики сами решайте, когда вам нужно обновлять те или иные элементы панели. Используйте инструменты синхронизации (очереди, уведомители и т.п.) или "локалки", на ваш выбор.VladosXPOM писал(а):А есть что-то подобное, но для остановки не панели, а таблицы или листбокса?
А у вас, случаем, галка Synchronous Display не стоит на таблице или листбоксе?
-
- beginner
- Сообщения: 40
- Зарегистрирован: 21 мар 2014, 14:09
- Версия LabVIEW: 2011
- Контактная информация:
Re: Загрузка ЦП приложением
Программа реализована таким образом, что данные в ее элементы ГУИ приходят из своего отдельного цикла с небольшой фиксированной частотой- 5Гц. Реже уже критично. Уже не первый раз замечаю медленную работу с форматированием ячеек таблиц, листбоксов из-за "поячеечной" обработки. Искал возможность "заморозить" обновление таблицы на время форматирования ячеек, не тормозя остальной интерфейс. За deferpanelupd спасибо, возьму на заметкуVitekkz88 писал(а): У Вас же GUI обновляется с определенным тайм-аутом