Russian Qt Forum
Ноябрь 23, 2024, 08:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4   Вниз
  Печать  
Автор Тема: qml:: вердикт по опыту эксплуатации 6 мес.  (Прочитано 27125 раз)
OKTA
Гость
« Ответ #15 : Декабрь 14, 2012, 12:53 »

а у меня весь проект на одном qml, всмысле интерфейс! Ни тормозов, ни каких-либо косяков!!

у меня к вам вопросы ,если можно:
1. сколько примерно состояний у компонентов с подгружаемой графикой
2. скорость обновления компонентов
3. их количество
у меня программа обслуживает Real-Time железку, при большом потоке данных - все практически виснет.
старый вариант без QML (но и графика упрощенная...) работает на ура...
анализ показал, что именно работа графическими элементами крайне медленная слишком много расходуется процессорных циклов (измерялось) - никуда не годится...


Приведи пожалуйста пример компонента с подгружаемой графикой 0_о  я чего-то может не так понял))
Записан
Bepec
Гость
« Ответ #16 : Декабрь 14, 2012, 13:01 »

Ужс. Единственное что приходит в голову- интерфейс и логика у вас криво соединены.
Записан
ctin
Гость
« Ответ #17 : Декабрь 14, 2012, 14:20 »

Тоже работаю с real-time железками. Обнаружилось что если менять source элемента Image (10x10px) раз в 10 мс - ядро процессора съедается почти целиком. Вылечил поставив два Image, меняя opacity верхнего.
http://doc.qt.digia.com/qt/qdeclarativeperformance.html
настоятельно рекомендую.
Записан
Patrin Andrey
Гость
« Ответ #18 : Декабрь 14, 2012, 14:31 »

Смена изображения раз в 10 мс - 100 кадров/сек. Вам столько надо?

И что вы подразумеваете под "реал-тайм железом".
Записан
Bepec
Гость
« Ответ #19 : Декабрь 14, 2012, 17:56 »

Реалтайм, это то железо, которое может точно отсчитать мс. Т.е. микроконтроллеры. Например в винде погрешность таймера примерно 15мс, в 7 и того меньше вроде.
Записан
Patrin Andrey
Гость
« Ответ #20 : Декабрь 14, 2012, 18:23 »

Причём тут железо. Это вообще-то от оси зависит на сколько я понимаю.
Записан
Bepec
Гость
« Ответ #21 : Декабрь 14, 2012, 18:52 »

По секрету скажу - зависит от кварца. А кварц стоит на микросхеме. А кварц на микросхеме = железо.

Windows да и Linux не реал таймовые системы. Правда под Linux существуют порты на реалтаймовое железо.

PS возможно это сложно для понимания. Вот пример - передача данных. Реал тайм может обрабатывать каждый приходящий байт, анализировать. А не реал тайм опознаёт конец кадра только при достижении таймаута (времени, необходимому на доставку 1 байта). И только потом обрабатывает.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #22 : Декабрь 14, 2012, 21:07 »

Тоже работаю с real-time железками. Обнаружилось что если менять source элемента Image (10x10px) раз в 10 мс - ядро процессора съедается почти целиком.
Даже скромный/устаревший процессор затратит на обработку 10*10 = 100 пикселей время куда меньшее 1мс (даже при наличии достаточно сложных вычислений). Поэтому если Вы применяете средства которые выжирают ресурсы системы в ноль на ровном месте - это очень плохая для них реклама, и о real-time лучше скромно промолчать в тряпочку.

настоятельно рекомендую.
В свете вышесказанного это совершенно неуместно, здесь не "рекомендовать" надо, а самому учиться

По секрету скажу - зависит от кварца. А кварц стоит на микросхеме...
Нет, это зависит от мозгов программиста. если их нет - любые чудесные аппаратные ресурсы будут бездарно разбазарены немедленно
Записан
0x0001
Гость
« Ответ #23 : Декабрь 15, 2012, 19:39 »

Тоже работаю с real-time железками. Обнаружилось что если менять source элемента Image (10x10px) раз в 10 мс - ядро процессора съедается почти целиком. Вылечил поставив два Image, меняя opacity верхнего.
http://doc.qt.digia.com/qt/qdeclarativeperformance.html
настоятельно рекомендую.
СПАСИБО за дельный совет про source, думается это и была "Ахиллесова пята" - в копилку его. в понедельник протестирую. да и ... побольше бы таких людей "знающих"! Улыбающийся)
...У меня кроме source ещё рисование насыщенное(линии, графики) + небольшая математика (ну проценты там посчитать, сократить разрядности, простейшие формулы типа кв. корень из суммы(вектора), среднее арифметическое, в общем тут как раз проблем не обнаружил), т.е. даю 99% что вроде с рисованием и арифметикой как-раз no problems. Еще уберу механизм "states".. чувствую что тут не гладко все.. хотя удобно (. в общем будем искать где узкое место

я states почти не использую все данные беру из моделей. Даже если нужно обновлять состояния, редко когда бывает нужно что бы данные не зависили от моделей, но и тогда есть хранилища в которых они содержаться тогда спасает
Q_PROPERTY
и сигналы на обновление инфы в элементе.
спасибо за "states" - и у меня были подозрения! учту!!!
И получите такие же тормоза в итоге.
qml сделан поверх QGraphicsView, который аппаратного ускорения в Qt4 не имеет. QGraphicsWidget также весьма нетороплив. Если вам нужен супер интерфейс, то тут либо используйте Qt5 и qml2, либо какую-нибудь иную обертку над OpenGL. В добавок вы говорите про реалтайм и у меня есть подозрения, что вы передаете в интерфейс что-то лишнее.
про "Лишнее" Спасибо! заодно обнаружил, что действительно 48 бит у меня не фильтровалось xor-ом Подмигивающий)) т.е. гнало все на обработку безусловно,...хотя они то как раз там NULL как влияют на графику... + поподробнее про Qt5 + QML2, уже доступно в opensource кодах? если так, перекомпилим, заценим, Очень интересно посмотреть в деле!...
если Вы применяете средства которые выжирают ресурсы системы в ноль на ровном месте - это очень плохая для них
ох.. ну что еще сказать.. (( будем бороться с ними Подмигивающий))
« Последнее редактирование: Декабрь 15, 2012, 19:50 от 0x0001 » Записан
Bepec
Гость
« Ответ #24 : Декабрь 16, 2012, 10:18 »

И не используйте синий цвет в таком количестве. Глаз выедает Веселый
Записан
Patrin Andrey
Гость
« Ответ #25 : Декабрь 16, 2012, 22:05 »

По секрету скажу - зависит от кварца. А кварц стоит на микросхеме. А кварц на микросхеме = железо.

Windows да и Linux не реал таймовые системы. Правда под Linux существуют порты на реалтаймовое железо.

PS возможно это сложно для понимания. Вот пример - передача данных. Реал тайм может обрабатывать каждый приходящий байт, анализировать. А не реал тайм опознаёт конец кадра только при достижении таймаута (времени, необходимому на доставку 1 байта). И только потом обрабатывает.

По секрету скажу, что 15 мс в винде получаются вовсе не от аппаратной части.
И скажите мне при вашем подходе x86 это "реал-тайм" железо или нет? И как на одном и том же железе могут сущществовать реал-тайм оси и не реал-тайм оси?

ПС. всё флудить заканчиваю, особенно с вересом.
Записан
Bepec
Гость
« Ответ #26 : Декабрь 16, 2012, 22:29 »

Вересом Улыбающийся Хотя не суть, показывает лишь ваше воспитание Улыбающийся

x86 не реалтайм, насколько я знаю. Ибо там одно только взаимодействие между модулями съедает довольно много времени.

И да,
По секрету скажу, что 15 мс в винде получаются вовсе не от аппаратной части.
, представь себе я это и хотел до тебя донести Улыбающийся Это проблема системы.

PS хотел бы я посмотреть на реалтаймовую систему Windows Веселый
Записан
vregess
Гость
« Ответ #27 : Декабрь 16, 2012, 22:43 »

PS хотел бы я посмотреть на реалтаймовую систему Windows Веселый

Смотри сколько влезет: IntervalZero’s RTX (бывшая VenturСom). Система жесткого реального времени.
Записан
ctin
Гость
« Ответ #28 : Декабрь 17, 2012, 13:39 »

ой...
Отвечаю по порядку:

Patrin Andrey: программа с такой частотой опрашивает железку. На RX и TX стоят картинки. Вот и получается 10мсек.
Bepec: я имел ввиду что всё время мониторю состояние прибора. Конечно тру реал-тайм тут не причем. (QNX буду подключать через годик Подмигивающий )
Igors: есть факт - с привязанными source двух картинок на rx и tx соответственно процессор сжирается почти полностью. С привязанной opacity - в два раза экономнее. Когда появится время - сделаю вообще простенький виджет с кружочком и paintEvent.
И вообще - речь шла не о релиз-версии, а о том как я учусь использовать qml.
« Последнее редактирование: Декабрь 17, 2012, 13:41 от ctin » Записан
lighting
Гость
« Ответ #29 : Декабрь 17, 2012, 17:26 »

ctin кто у вас сможет воспринимать информацию столь динамично меняющуюся?
Если информация меняется так часто возможно есть смысл показывать ее реже. К чему 100500 миллионов кадров в секунду если человек все равно ничего понять в таком мельтешении не сможет. Можно записывать ее куда-нибудь в файл, чтобы потом просмотреть, а вот в реалтайме все вываливать врядли разумно. Ну и во вторых под такую узкосепциализированную задачу можно и свой компонент на C++ написать, используя для ускорения графики хоть openGL.
Записан
Страниц: 1 [2] 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.122 секунд. Запросов: 23.