Загрузка ЦП приложением

Создание приложений, библиотек, инсталляторов
VladosXPOM
beginner
beginner
Сообщения: 40
Зарегистрирован: 21 мар 2014, 14:09
Версия LabVIEW: 2011
Контактная информация:

Загрузка ЦП приложением

Сообщение VladosXPOM »

Разрабатываю различные программы в среде LV, после компилирую их в EXE. Заметил, что простенькая программка ненормально нагружает ЦП (50%). Быстрых циклов нету, приоритеты циклов определены, память не ест, обновление передней панели два-три раза в сек. Сейчас что бы определить кусок ресурсозатратного кода с помощью Diagram disable отключаю части ПО и смотрю на загрузку. Очень медленный и геморный процесс. Есть ли более удобный способ??? Про тулкит который позволяет мониторить использование памяти знаю- не то. В надстройке Tools...- perfomance and memory не нашел прямой связи между параметрами и загрузкой ЦП. И речь именно о загрузке ЦП скомпилированным приложением через RTEngine. Работа среды не рассматривается. Спасибо
Аватара пользователя
alerm

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

Re: Загрузка ЦП приложением

Сообщение alerm »

VladosXPOM, поставьте небольшую задержку в циклы, всего скорее они имеются в программе.
Borjomy_1

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

Re: Загрузка ЦП приложением

Сообщение Borjomy_1 »

VladosXPOM, если вы не можете выяснить через Perfomance & Memory, в какой VI у вас жор процессорного времени, то скорее всего он в основной VI. И, как правило, он проявляется в циклах с нулевым таймаутом в функциях чтения из очереди, нотификатора, Event структуры и т.п. Но если объект (например queue) недействителен (например, не проинициализирован, либо при вызове VI он не был подключен), то таймаут все равно не поможет. функция ожидания в данном случае нового элемента очереди будет выполняться с ошибкой, но без задержки и получится нагрузка процессора. Это относится ко всем объектам, которые используют таймауты в функциях ожидания. Так что ищите.
VladosXPOM
beginner
beginner
Сообщения: 40
Зарегистрирован: 21 мар 2014, 14:09
Версия LabVIEW: 2011
Контактная информация:

Re: Загрузка ЦП приложением

Сообщение VladosXPOM »

alerm писал(а):, поставьте небольшую задержку в циклы, всего скорее они имеются в программе.
Быстрых циклов в программе нет. В каждом обязательно присутствует задержка. Кроме циклов чтения из очередей
Borjomy_1 писал(а):,выяснить через Perfomance & Memory .
Какая из колонок показывает потраченное процессорное время? Спасибо
Аватара пользователя
Vitekkz88

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

Re: Загрузка ЦП приложением

Сообщение Vitekkz88 »

VladosXPOM, для начала укажите, какой процессор используется? Если процессор мощный, то кидайте исходик, будем разбираться.
Возможно заложена какая-то мощная обработка сигнала? Либо в приложении используются сторонние библиотеки. Возможно нагрузку даёт сбор данных по некоторому интерфейсу...Можно долго гадать.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Borjomy_1

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

Re: Загрузка ЦП приложением

Сообщение Borjomy_1 »

Какая из колонок показывает потраченное процессорное время?
Хм.. вы открывали этот инструмент? По-английски написано: VI Time - это суммарное время выполнения всех запусков данной :vi:(без вызовов Sub VI внутри), Sub VI Time - тут семи пядей во лбу не надо, чтобы догадаться, что это время выполнения Sub VI, которые вызываются в процессе работы. если кликните на имя :vi:, то получите список вызываемых Sub VI с их статистикой. Total Time - это сумма двух предыдущих столбцов. #Runs - количество запусков данной :vi:. Поделив Total Time на #Runs получите среднее время выполнения одного запуска :vi:, это значение отображается в столбце Average
И вообще. читайте справку. Там подробно все расписано.
Аватара пользователя
Chupakabra

Tutorials
professional
professional
Сообщения: 360
Зарегистрирован: 21 янв 2009, 10:50
Награды: 1
Версия LabVIEW: 2015
Откуда: Москва
Поблагодарили: 4 раза
Контактная информация:

Re: Загрузка ЦП приложением

Сообщение Chupakabra »

VladosXPOM писал(а): Быстрых циклов в программе нет. В каждом обязательно присутствует задержка. Кроме циклов чтения из очередей
А таймаут выставлен у блока чтения элемента из очереди?
VladosXPOM
beginner
beginner
Сообщения: 40
Зарегистрирован: 21 мар 2014, 14:09
Версия LabVIEW: 2011
Контактная информация:

Re: Загрузка ЦП приложением

Сообщение VladosXPOM »

Chupakabra писал(а):А таймаут выставлен у блока чтения элемента из очереди?
Выставлен конечно.

Разобрался в проблеме. Процессор жрала экспресс VI Elapsed time (использовалась во многих местах) и процесс окрашивания ячеек таблицы (за одну итерацию выборочно перекрашивались примерно 250 ячеек через Active cell-cell color по Ref ссылке). Написал свой Elapsed time, использующий TickCount и убрал цветовое выделение ячеек. Суммарная загрузка упала с 50% до 6 примерно. Спасибо за ответы
Аватара пользователя
dadreamer

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

Re: Загрузка ЦП приложением

Сообщение dadreamer »

VladosXPOM писал(а):Процессор жрала экспресс VI Elapsed time (использовалась во многих местах)
Как такое возможно? Там же простейший код используется. И она реентерантная.
Вложения
2016-08-12_14-45-41.jpg
Аватара пользователя
Vitekkz88

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

Re: Загрузка ЦП приложением

Сообщение Vitekkz88 »

VladosXPOM писал(а):Написал свой Elapsed time, использующий TickCount и убрал цветовое выделение ячеек. Суммарная загрузка упала с 50% до 6 примерно. Спасибо за ответы
Так что в итоге снизило загрузку процессора? Отсутствие перерисовки или Elapsed time? У меня подозрения на перерисовку конечно же. Ставьте DeferPanelUpdates, когда ячейки разукрашиваете. Должно помочь.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
VladosXPOM
beginner
beginner
Сообщения: 40
Зарегистрирован: 21 мар 2014, 14:09
Версия LabVIEW: 2011
Контактная информация:

Re: Загрузка ЦП приложением

Сообщение VladosXPOM »

Из Perfomance and memory по времени выполнения на первом месте subElapcedTime, на втором подприбор в котором крашу ячейки.
Vitekkz88 писал(а): Ставьте DeferPanelUpdates
как я понимаю, оно приостанавливает обновление всей передней панели. А есть что-то подобное, но для остановки не панели, а таблицы или листбокса?
Аватара пользователя
IvanLis

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

Re: Загрузка ЦП приложением

Сообщение IvanLis »

VladosXPOM писал(а):DeferPanelUpdates как я понимаю, оно приостанавливает обновление всей передней панели. А есть что-то подобное, но для остановки не панели, а таблицы или листбокса?
Это свойство блокирует перерисовку всей лицевой панели, в том числе и таблиц и прочих элементов. Отдельно для элементов такого вроде повернуть нельзя.
См.: https://decibel.ni.com/content/docs/DOC-4519
Аватара пользователя
Vitekkz88

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

Re: Загрузка ЦП приложением

Сообщение Vitekkz88 »

А есть что-то подобное, но для остановки не панели, а таблицы или листбокса?
Зачем? У Вас же GUI обновляется с определенным тайм-аутом, не? Или надо обновлять как можно чаще?
Ставьте на весь GUI, тормоза с отрисовкой пропадут. И верните как было ElapcedTime, проверьте результат. Интересно же)
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Аватара пользователя
dadreamer

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

Re: Загрузка ЦП приложением

Сообщение dadreamer »

VladosXPOM писал(а):А есть что-то подобное, но для остановки не панели, а таблицы или листбокса?
Оформите работу с (G)UI в отдельном цикле/потоке, а в цикле логики сами решайте, когда вам нужно обновлять те или иные элементы панели. Используйте инструменты синхронизации (очереди, уведомители и т.п.) или "локалки", на ваш выбор.

А у вас, случаем, галка Synchronous Display не стоит на таблице или листбоксе?
VladosXPOM
beginner
beginner
Сообщения: 40
Зарегистрирован: 21 мар 2014, 14:09
Версия LabVIEW: 2011
Контактная информация:

Re: Загрузка ЦП приложением

Сообщение VladosXPOM »

Vitekkz88 писал(а): У Вас же GUI обновляется с определенным тайм-аутом
Программа реализована таким образом, что данные в ее элементы ГУИ приходят из своего отдельного цикла с небольшой фиксированной частотой- 5Гц. Реже уже критично. Уже не первый раз замечаю медленную работу с форматированием ячеек таблиц, листбоксов из-за "поячеечной" обработки. Искал возможность "заморозить" обновление таблицы на время форматирования ячеек, не тормозя остальной интерфейс. За deferpanelupd спасибо, возьму на заметку
Ответить

Вернуться в «Создание приложений»