Странное торможение параллельных потоков
Странное торможение параллельных потоков
Имеется не очень маленький, но и не сказать что большой, проект. Основной идёт в три параллельных цикла. Никакой сложной иерархии нет, просто в разных местах вызываются простенькие SubVI-субрутины. На лиц. панели сделаны индикаторы для текущей итерации (квадратик i ) каждого потока, просто чтобы проверять, не тормозит ли.
В целом всё отлично, никаких тормозов. Но заметил неприятный артефакт. Если вращать колесо мыши, то рост значений в этих индикаторах, а значит и сами циклы, резко тормозятся, вплоть до остановки, если колесо мыши вращается быстро.
Сам имеет около 250 разных контролов и индикаторов, и около 30 скрытых, 5 графиков. Всё это раскидано по 6 вкладкам на Tab control. Но лиц. панель в экран помещается, и реальной прокрутки при вращении колеса нет. Заметил, если поставить курсор в таблицу (чтобы при вращении колеса прокручивалась именно таблица), то артефакт пропадает, торможения нет.
Огорчает то, что:
1) Ни основной , ни один из вызываемых subVI не имеют никаких "сношений" с колесом мыши, то есть никак специально не обращаются к данным, которые можно получить с колеса.
2) Не знаю, с какого момента это началось, возможно, было уже давно, просто заметил недавно.
Сам выкладывать очень геморно, там ещё 13 subVI, плюс специальные ActiveX (устанавливаемые отдельно) плюс пара доп. библиотек. Чем может быть вызван артефакт (особенно при том, что в пункте 1)?
В целом всё отлично, никаких тормозов. Но заметил неприятный артефакт. Если вращать колесо мыши, то рост значений в этих индикаторах, а значит и сами циклы, резко тормозятся, вплоть до остановки, если колесо мыши вращается быстро.
Сам имеет около 250 разных контролов и индикаторов, и около 30 скрытых, 5 графиков. Всё это раскидано по 6 вкладкам на Tab control. Но лиц. панель в экран помещается, и реальной прокрутки при вращении колеса нет. Заметил, если поставить курсор в таблицу (чтобы при вращении колеса прокручивалась именно таблица), то артефакт пропадает, торможения нет.
Огорчает то, что:
1) Ни основной , ни один из вызываемых subVI не имеют никаких "сношений" с колесом мыши, то есть никак специально не обращаются к данным, которые можно получить с колеса.
2) Не знаю, с какого момента это началось, возможно, было уже давно, просто заметил недавно.
Сам выкладывать очень геморно, там ещё 13 subVI, плюс специальные ActiveX (устанавливаемые отдельно) плюс пара доп. библиотек. Чем может быть вызван артефакт (особенно при том, что в пункте 1)?
Последний раз редактировалось Boris_K 03 мар 2016, 21:40, всего редактировалось 1 раз.
Race conditions - опасный и скользкий баг!
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Странный артефакт с колесом мыши
Значит ставим кофе, будем гадать на гуще .Boris_K писал(а):Сам выкладывать очень геморно, там ещё 13 subVI, плюс специальные ActiveX (устанавливаемые отдельно) плюс пара доп. библиотек. Чем может быть вызван артефакт (особенно при том, что в пункте 1)?
Это может быть и глюк самой системы.
У Вас прокрутка на FP отключена?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Re: Странный артефакт с колесом мыши
1. особого смысла выкладывать нет, т. к. говорю же, нигде в программе нет обращений к колесу мыши, а кода наворочено плотненько так на много экранов 1080pЗначит ставим кофе, будем гадать на гуще
2. реально геморно выкладывать, и тем кто смотреть будет, надо будет устанавливать кучу всего
3. немного не по себе, когда выкладываю в сеть исходник своей интеллектуальной собственности, поймите правильно, думаю не я один такой
полосы прокрутки есть, проверю завтра на работе, как будет если отключить, спасибо за совет.У Вас прокрутка на FP отключена?
Race conditions - опасный и скользкий баг!
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Странный артефакт с колесом мыши
Я Вас понимаю.Boris_K писал(а):немного не по себе, когда выкладываю в сеть исходник своей интеллектуальной собственности, поймите правильно, думаю не я один такой
Можно попробовать оставить только элементы лицевой панели, а всю аналитику на BD удалить, возможно эффект "подвисания" останется. Тогда можно предполагать с большей степенью достоверности.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- professor
- Сообщения: 3409
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Странный артефакт с колесом мыши
Они реально тормозят, или только индикация подвисает?Boris_K писал(а): В целом всё отлично, никаких тормозов. Но заметил неприятный артефакт. Если вращать колесо мыши, то рост значений в этих индикаторах, а значит и сами циклы, резко тормозятся, вплоть до остановки, если колесо мыши вращается быстро.
Посчитайте период цикла, нарисуйте на графике. мб проблема только в перерисовке экрана из-за большого числа пересекающихся элементов.
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Странный артефакт с колесом мыши
Boris_K, попробуйте добавить Defer Panel Update для контролов/индикаторов.
http://labviewportal.org/viewtopic.php? ... lit#p62675
http://labviewportal.org/viewtopic.php? ... lit#p62675
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Странный артефакт с колесом мыши
Eсть зависимость от текущей страницы Tab контрола?
Есть Event Structure c динамической регистрацией событий?
Где находится курсор мышки при прокрутке?
Вместо кода достаточно для начала пары картинок.
Есть Event Structure c динамической регистрацией событий?
Где находится курсор мышки при прокрутке?
Вместо кода достаточно для начала пары картинок.
Re: Странный артефакт с колесом мыши
Прояснилось. Это грабли 2012. Возможно, в новых версиях пофиксили.
Вот простенький пример (считает все возможные варианты сопротивления при параллельном подсоединении до 8 резисторов). Тот же самый артефакт. Запустите Parallel.vi. Следите, как бежит индикатор i, если быстро покрутить колесо мыши. Если же его крутить, когда мышь на листбоксе или списке курсоров от графика - артефакт пропадает. maxms - отслеживает максимальное значение периода цикла (reset_maxms - сбросить его).
Если в настройках убрать полосы прокрутки, то артефакт пропадает. Но как тогда прокручивать на маленьких экранах? Только программно узнавать разрешение и подстраиваться, либо делать отдельную уменьшенную версию интерфейса?
Реально тормозят цикл (см. пример).Они реально тормозят, или только индикация подвисает?
Посчитайте период цикла, нарисуйте на графике. мб проблема только в перерисовке экрана из-за большого числа пересекающихся элементов.
Нет, нет.Eсть зависимость от текущей страницы Tab контрола?
Есть Event Structure c динамической регистрацией событий?
В любом месте, кроме листбоксов, которые можно крутить (если в них, то тормоза пропадают, но не полностью, на несколько мс тормозит, видимо из-за перерисовки списка).Где находится курсор мышки при прокрутке?
Вот простенький пример (считает все возможные варианты сопротивления при параллельном подсоединении до 8 резисторов). Тот же самый артефакт. Запустите Parallel.vi. Следите, как бежит индикатор i, если быстро покрутить колесо мыши. Если же его крутить, когда мышь на листбоксе или списке курсоров от графика - артефакт пропадает. maxms - отслеживает максимальное значение периода цикла (reset_maxms - сбросить его).
Если в настройках убрать полосы прокрутки, то артефакт пропадает. Но как тогда прокручивать на маленьких экранах? Только программно узнавать разрешение и подстраиваться, либо делать отдельную уменьшенную версию интерфейса?
- Вложения
-
- Parallel_resist.zip
- (29.85 КБ) 173 скачивания
Race conditions - опасный и скользкий баг!
-
- professor
- Сообщения: 3409
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Странный артефакт с колесом мыши
судя по всему дело именно в перерисовывании экрана системой.
как вариант решения, если есть критичные к таймингу процессы: распараллелить их. В одном цикле расчёты, во втором отображение и работа с интерфейсом.
И да, избавляться от полос прокрутки, они некрасиво смотрятся. Есть промежуточный вариант решения между "всё руками и красиво" и всё автоматом, но ужасно.
Сплиттерами разделить окно на зоны, сделав участки без растяжения и с растяжением. График разместить во второй, тогда он будет автоматом за экраном растягиваться, а остальное фиксированного размера. Примерно так: ну и в конце концов, нефиг мышкой баловаться :)
как вариант решения, если есть критичные к таймингу процессы: распараллелить их. В одном цикле расчёты, во втором отображение и работа с интерфейсом.
И да, избавляться от полос прокрутки, они некрасиво смотрятся. Есть промежуточный вариант решения между "всё руками и красиво" и всё автоматом, но ужасно.
Сплиттерами разделить окно на зоны, сделав участки без растяжения и с растяжением. График разместить во второй, тогда он будет автоматом за экраном растягиваться, а остальное фиксированного размера. Примерно так: ну и в конце концов, нефиг мышкой баловаться :)
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Странный артефакт с колесом мыши
На счет пофиксили....Boris_K писал(а):Прояснилось. Это грабли 2012. Возможно, в новых версиях пофиксили.
LV2014-32bit (Linux) - баг наблюдается. Причем если колесико мышки вращать интенсивно, то зависание не прерывается на всем интервале времени.
Я просто уже наступал на эти "грабли", по этому сразу и спросил.Boris_K писал(а):Если в настройках убрать полосы прокрутки, то артефакт пропадает. Но как тогда прокручивать на маленьких экранах? Только программно узнавать разрешение и подстраиваться, либо делать отдельную уменьшенную версию интерфейса?
Делаю окно программы на минимально возможное разрешение, сейчас меньше 800*600 на уже не найдешь мониторов, но за стандарт можно брать 1024*768. Я правда не любитель заморочек с интерфейсом, мой девиз минимализм + функциональность .
Я это связываю с перерисовкой всего окна. Если крутить над отдельным контролом (который поддерживает прокрутку), то перерисовывается только он, по этому и подвисание не столь явно.
Ну а подвисание можно связать только на баг взаимодействия LabVIEW с OS.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Re: Странный артефакт с колесом мыши
Не думаю что это поможет. ведь при выполнении сам создаёт свой отдельный поток, в котором обрабатывается интерфейс. А в каком потоке на блок-диаграмме я размещу терминалы контролов и индикаторов - никак на это не влияет. При этом, на примере того проекта (где у меня 3 потока) - тормозятся они все! Это больше всего расстраивает. Крутанул юзер колёсико - и тормознул критичный по времени процесс.как вариант решения, если есть критичные к таймингу процессы: распараллелить их. В одном цикле расчёты, во втором отображение и работа с интерфейсом.
Глянул на сайте NI багфиксы для 2015 - судя по всему, ещё не исправлен. Может багрепорт написать? Только куда писать - не нашёл. Просто в support?
Race conditions - опасный и скользкий баг!
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Странный артефакт с колесом мыши
LabVIEW 2014 x64 Win7 Max Core i7, 1GB Video, 8GB RAM, FHD - подвисаний и тормозов нет. Всё нормально работает и не тормозит. Устал колёсико накручивать.LV2014-32bit (Linux) - баг наблюдается...подвисание можно связать только на баг взаимодействия LabVIEW с OS.
Boris_K, скачайте пробную версию LV 2014 для Win и попробуйте.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- professor
- Сообщения: 3409
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Странный артефакт с колесом мыши
LabVIEW 2015 32 притормаживает.Vitekkz88 писал(а):LabVIEW 2014 x64 Win7 Max Core i7, 1GB Video, 8GB RAM, FHD - подвисаний и тормозов нет. Всё нормально работает и не тормозит..LV2014-32bit (Linux) - баг наблюдается...подвисание можно связать только на баг взаимодействия LabVIEW с OS.
не то что бы тормозит, но без прокрутки 15-50, с прокруткой до 250 подпрыгивает
-
- professor
- Сообщения: 3409
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Странный артефакт с колесом мыши
подозреваю, что мы по-разному понимаем распараллеливание. очень даже помогло.Boris_K писал(а):Не думаю что это поможет. ведь при выполнении сам создаёт свой отдельный поток, в котором обрабатывается интерфейс.как вариант решения, если есть критичные к таймингу процессы: распараллелить их. В одном цикле расчёты, во втором отображение и работа с интерфейсом.
Чарт - время исполнения расчётного цикла, время отрисовки скачет, но расчёт занимает меньше миллисекунды.
решение (третий вариант):
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Странный артефакт с колесом мыши
В вложенном VI не менее странное поведение Event Structure.
1. Генерация User Event симулирует Mouse Scroll Event, которое как бы еще не было доступно в 2012.
2. User Event зарегистрировано Event Structure.
3. Обработчика User Event в явном виде нет.
1. Генерация User Event симулирует Mouse Scroll Event, которое как бы еще не было доступно в 2012.
2. User Event зарегистрировано Event Structure.
3. Обработчика User Event в явном виде нет.
- Вложения
-
- What is Hell.vi
- (17.05 КБ) 173 скачивания
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение