Название: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: 0x0001 от Декабрь 14, 2012, 10:10 Людям, предполагающим использовать QtDeclarative (QML на Windows), предостерегаю, что по мере разрастания интерфейса и кол-ва элементов, скорость катастрофически деградирует + наблюдается зависимость от hw части, а также версии локализации Windows (напр. на китайских виндах наблюдались множество ошибок в рисовании даже не текстовых элементов)
соответственно, я пересмотрел мои изначальные мытарства: http://www.prog.org.ru/topic_22771_0.html и будет все переделываться на QStyle+QGraphicsWidget+QAbstractAnimation, без использования Языка QML. возможно, потестирую QSS скрипты... старый проект, использовал именно это и все работало на совершенно любых машинах, на Азиатских языках. Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Sancho_s_rancho от Декабрь 14, 2012, 10:17 И получите такие же тормоза в итоге.
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: 0x0001 от Декабрь 14, 2012, 10:22 И получите такие же тормоза в итоге. why?Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: ecspertiza от Декабрь 14, 2012, 10:42 А не рассматривался такой вариант что qml код не совсем корректно написан и его можно оптимизировать ? В приложениях тоже частенько использую qml и в больших и маленьких, проблем пока не наблюдал, за счет тех, где либо не верная архитектура либо кривопись :)
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: mutineer от Декабрь 14, 2012, 11:05 А не рассматривался такой вариант что qml код не совсем корректно написан и его можно оптимизировать ? В приложениях тоже частенько использую qml и в больших и маленьких, проблем пока не наблюдал, за счет тех, где либо не верная архитектура либо кривопись :) Кстати да, QML очень легко написать таким образом, что рисоваться все будет корректно, но сам код будет сильно далек от оптимальности. У нас поначалу в QML коде такой ужас был, что страшно вспомнить Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: ecspertiza от Декабрь 14, 2012, 11:09 Я вот тоже об этом пишу, потому как натыкались на эти грабли :)
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: OKTA от Декабрь 14, 2012, 11:56 а у меня весь проект на одном qml, всмысле интерфейс! Ни тормозов, ни каких-либо косяков!! И без лишних заморочек добавлять что-то новое можно, а главное быстро!! Не могу понять, где нашли медленную скорость! И все косяки, замеченные мной при запуске на разных машинах(всмысле разных ОС), проявлялись только в шрифтах!! СОглашусь, конечно, что код в qml на монстра становится похож в больших объемах, но лично меня не пугает - всегда легко разобраться!
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: OKTA от Декабрь 14, 2012, 12:03 о! и + какие неимоверные цацочки-пецочки можно накрутить красивые))) Жду не дождусь, когда можно будет под iphone и ipad собирать))
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: kambala от Декабрь 14, 2012, 12:14 А не рассматривался такой вариант что qml код не совсем корректно написан и его можно оптимизировать ? В приложениях тоже частенько использую qml и в больших и маленьких, проблем пока не наблюдал, за счет тех, где либо не верная архитектура либо кривопись :) Кстати да, QML очень легко написать таким образом, что рисоваться все будет корректно, но сам код будет сильно далек от оптимальности. У нас поначалу в QML коде такой ужас был, что страшно вспомнить Я вот тоже об этом пишу, потому как натыкались на эти грабли :) ну и где же учебные статьи как делать правильно? ;)Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: 0x0001 от Декабрь 14, 2012, 12:22 а у меня весь проект на одном qml, всмысле интерфейс! Ни тормозов, ни каких-либо косяков!! у меня к вам вопросы ,если можно: 1. сколько примерно состояний у компонентов с подгружаемой графикой 2. скорость обновления компонентов 3. их количество у меня программа обслуживает Real-Time железку, при большом потоке данных - все практически виснет. старый вариант без QML (но и графика упрощенная...) работает на ура... анализ показал, что именно работа графическими элементами крайне медленная слишком много расходуется процессорных циклов (измерялось) - никуда не годится... Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: mutineer от Декабрь 14, 2012, 12:30 ну и где же учебные статьи как делать правильно? ;) В документации примеры, учебные статьи и рекомендации как делать правильно. Я, имхо, ничего нового туда привнести не смогу Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: 0x0001 от Декабрь 14, 2012, 12:31 А не рассматривался такой вариант что qml код не совсем корректно написан и его можно оптимизировать ? В приложениях тоже частенько использую qml и в больших и маленьких, проблем пока не наблюдал, за счет тех, где либо не верная архитектура либо кривопись :) рассматривался и делался анализ сопоставления простейших функций - изменение состояния графического эл-та.qml: по изменению qml свойства states, меняется графика через painter: тоже самое qml показал существенно более низкую скорость (мерялась системным таймером nsec)! Хотя.. в qml есть множество способов, возможно states является вообще медленным из-за больших внутренних "перевызовов"... Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: ecspertiza от Декабрь 14, 2012, 12:36 я states почти не использую все данные беру из моделей. Даже если нужно обновлять состояния, редко когда бывает нужно что бы данные не зависили от моделей, но и тогда есть хранилища в которых они содержаться тогда спасает
Q_PROPERTY и сигналы на обновление инфы в элементе. Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Sancho_s_rancho от Декабрь 14, 2012, 12:46 qml сделан поверх QGraphicsView, который аппаратного ускорения в Qt4 не имеет. QGraphicsWidget также весьма нетороплив. Если вам нужен супер интерфейс, то тут либо используйте Qt5 и qml2, либо какую-нибудь иную обертку над OpenGL. В добавок вы говорите про реалтайм и у меня есть подозрения, что вы передаете в интерфейс что-то лишнее.
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Patrin Andrey от Декабрь 14, 2012, 12:50 Если винда, то x86? можно код qml, который на х86 будет тормозить?
Если есть проблемы сделать что-то на qml, то никто не мешает встроить нативный виджет с любым функционалом. PS. под винду на qml не пишу, может есть какие-то особенности, но с чего бы вдруг:) Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: OKTA от Декабрь 14, 2012, 12:53 а у меня весь проект на одном qml, всмысле интерфейс! Ни тормозов, ни каких-либо косяков!! у меня к вам вопросы ,если можно: 1. сколько примерно состояний у компонентов с подгружаемой графикой 2. скорость обновления компонентов 3. их количество у меня программа обслуживает Real-Time железку, при большом потоке данных - все практически виснет. старый вариант без QML (но и графика упрощенная...) работает на ура... анализ показал, что именно работа графическими элементами крайне медленная слишком много расходуется процессорных циклов (измерялось) - никуда не годится... Приведи пожалуйста пример компонента с подгружаемой графикой 0_о я чего-то может не так понял)) Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Bepec от Декабрь 14, 2012, 13:01 Ужс. Единственное что приходит в голову- интерфейс и логика у вас криво соединены.
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: ctin от Декабрь 14, 2012, 14:20 Тоже работаю с real-time железками. Обнаружилось что если менять source элемента Image (10x10px) раз в 10 мс - ядро процессора съедается почти целиком. Вылечил поставив два Image, меняя opacity верхнего.
http://doc.qt.digia.com/qt/qdeclarativeperformance.html настоятельно рекомендую. Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Patrin Andrey от Декабрь 14, 2012, 14:31 Смена изображения раз в 10 мс - 100 кадров/сек. Вам столько надо?
И что вы подразумеваете под "реал-тайм железом". Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Bepec от Декабрь 14, 2012, 17:56 Реалтайм, это то железо, которое может точно отсчитать мс. Т.е. микроконтроллеры. Например в винде погрешность таймера примерно 15мс, в 7 и того меньше вроде.
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Patrin Andrey от Декабрь 14, 2012, 18:23 Причём тут железо. Это вообще-то от оси зависит на сколько я понимаю.
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Bepec от Декабрь 14, 2012, 18:52 По секрету скажу - зависит от кварца. А кварц стоит на микросхеме. А кварц на микросхеме = железо.
Windows да и Linux не реал таймовые системы. Правда под Linux существуют порты на реалтаймовое железо. PS возможно это сложно для понимания. Вот пример - передача данных. Реал тайм может обрабатывать каждый приходящий байт, анализировать. А не реал тайм опознаёт конец кадра только при достижении таймаута (времени, необходимому на доставку 1 байта). И только потом обрабатывает. Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Igors от Декабрь 14, 2012, 21:07 Тоже работаю с real-time железками. Обнаружилось что если менять source элемента Image (10x10px) раз в 10 мс - ядро процессора съедается почти целиком. Даже скромный/устаревший процессор затратит на обработку 10*10 = 100 пикселей время куда меньшее 1мс (даже при наличии достаточно сложных вычислений). Поэтому если Вы применяете средства которые выжирают ресурсы системы в ноль на ровном месте - это очень плохая для них реклама, и о real-time лучше скромно промолчать в тряпочку.настоятельно рекомендую. В свете вышесказанного это совершенно неуместно, здесь не "рекомендовать" надо, а самому учиться По секрету скажу - зависит от кварца. А кварц стоит на микросхеме... Нет, это зависит от мозгов программиста. если их нет - любые чудесные аппаратные ресурсы будут бездарно разбазарены немедленноНазвание: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: 0x0001 от Декабрь 15, 2012, 19:39 Тоже работаю с real-time железками. Обнаружилось что если менять source элемента Image (10x10px) раз в 10 мс - ядро процессора съедается почти целиком. Вылечил поставив два Image, меняя opacity верхнего. СПАСИБО за дельный совет про source, думается это и была "Ахиллесова пята" - в копилку его. в понедельник протестирую. да и ... побольше бы таких людей "знающих"! :))http://doc.qt.digia.com/qt/qdeclarativeperformance.html настоятельно рекомендую. ...У меня кроме source ещё рисование насыщенное(линии, графики) + небольшая математика (ну проценты там посчитать, сократить разрядности, простейшие формулы типа кв. корень из суммы(вектора), среднее арифметическое, в общем тут как раз проблем не обнаружил), т.е. даю 99% что вроде с рисованием и арифметикой как-раз no problems. Еще уберу механизм "states".. чувствую что тут не гладко все.. хотя удобно (. в общем будем искать где узкое место я states почти не использую все данные беру из моделей. Даже если нужно обновлять состояния, редко когда бывает нужно что бы данные не зависили от моделей, но и тогда есть хранилища в которых они содержаться тогда спасает спасибо за "states" - и у меня были подозрения! учту!!!Q_PROPERTY и сигналы на обновление инфы в элементе. И получите такие же тормоза в итоге. если Вы применяете средства которые выжирают ресурсы системы в ноль на ровном месте - это очень плохая для них ох.. ну что еще сказать.. (( будем бороться с ними ;)))Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Bepec от Декабрь 16, 2012, 10:18 И не используйте синий цвет в таком количестве. Глаз выедает :D
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Patrin Andrey от Декабрь 16, 2012, 22:05 По секрету скажу - зависит от кварца. А кварц стоит на микросхеме. А кварц на микросхеме = железо. По секрету скажу, что 15 мс в винде получаются вовсе не от аппаратной части. Windows да и Linux не реал таймовые системы. Правда под Linux существуют порты на реалтаймовое железо. PS возможно это сложно для понимания. Вот пример - передача данных. Реал тайм может обрабатывать каждый приходящий байт, анализировать. А не реал тайм опознаёт конец кадра только при достижении таймаута (времени, необходимому на доставку 1 байта). И только потом обрабатывает. И скажите мне при вашем подходе x86 это "реал-тайм" железо или нет? И как на одном и том же железе могут сущществовать реал-тайм оси и не реал-тайм оси? ПС. всё флудить заканчиваю, особенно с вересом. Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Bepec от Декабрь 16, 2012, 22:29 Вересом :) Хотя не суть, показывает лишь ваше воспитание :)
x86 не реалтайм, насколько я знаю. Ибо там одно только взаимодействие между модулями съедает довольно много времени. И да, По секрету скажу, что 15 мс в винде получаются вовсе не от аппаратной части. , представь себе я это и хотел до тебя донести :) Это проблема системы. PS хотел бы я посмотреть на реалтаймовую систему Windows :D Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: vregess от Декабрь 16, 2012, 22:43 PS хотел бы я посмотреть на реалтаймовую систему Windows :D Смотри сколько влезет: IntervalZero’s RTX (http://www.intervalzero.com/) (бывшая VenturСom). Система жесткого реального времени. Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: ctin от Декабрь 17, 2012, 13:39 ой...
Отвечаю по порядку: Patrin Andrey: программа с такой частотой опрашивает железку. На RX и TX стоят картинки. Вот и получается 10мсек. Bepec: я имел ввиду что всё время мониторю состояние прибора. Конечно тру реал-тайм тут не причем. (QNX буду подключать через годик ;) ) Igors: есть факт - с привязанными source двух картинок на rx и tx соответственно процессор сжирается почти полностью. С привязанной opacity - в два раза экономнее. Когда появится время - сделаю вообще простенький виджет с кружочком и paintEvent. И вообще - речь шла не о релиз-версии, а о том как я учусь использовать qml. Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: lighting от Декабрь 17, 2012, 17:26 ctin кто у вас сможет воспринимать информацию столь динамично меняющуюся?
Если информация меняется так часто возможно есть смысл показывать ее реже. К чему 100500 миллионов кадров в секунду если человек все равно ничего понять в таком мельтешении не сможет. Можно записывать ее куда-нибудь в файл, чтобы потом просмотреть, а вот в реалтайме все вываливать врядли разумно. Ну и во вторых под такую узкосепциализированную задачу можно и свой компонент на C++ написать, используя для ускорения графики хоть openGL. Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: OKTA от Декабрь 18, 2012, 02:50 Создаю 32 картинки, ставлю таймер, который срабатывает каждую миллисекунду и меняет постоянно source у всех этих 32 картинок... Процессор плевать хотел.. вот 128 картинок уже заставили его нагрузиться, да и то на 20 процентов, судя по диспетчеру..
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: ctin от Декабрь 18, 2012, 07:40 lighting: да всё ок, в релизе таких глупостей нету.
OKTA: FFFFFFFFUUUUUUUUUUUUU!!!!!!!!!!!!......... придется проверять и дальше копать.... Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: OKTA от Декабрь 18, 2012, 11:51 Ты ничего с потоками не намудрил?)
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: ctin от Декабрь 19, 2012, 10:47 мудрил. rx и tx - это свойства (properties), значение которым присваивается в отдельном потоке. В QML написано просто: opacity: (device.rx != 0)
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: 0x0001 от Декабрь 25, 2012, 10:24 программа с такой частотой опрашивает железку. На RX и TX стоят картинки. Вот и получается 10мсек. При всем уважении, с такой частотой опрашивать используя стандартный COM port API (или Virtual UART-USB) for Win7/XP на "среднестатистическом" компьютере невозможно, надо делать свою PCI с hw буферизацией или USB full speed + свой driver.например я использую около 150мс, почему "около" - просто стараюсь делать запросы в моменты "простоя" всех потоков и отсутствии в очереди WIN32 сообщений, но проверяю таймером чтобы не более 200мс. "Железка" же естественно отвечает моментально. У меня сейчас в принципе 1 идея, продолжать рисовать "за экраном" весь интерфейс(графика,картинки и пр), как уже делал с применением DirectX и далее выводить все это на экран вкупе. QML не подходит для выполнения в динамике >200мс (про инерцию глаза + осознание Человеком не забываем) более 80 элементов для средних PC, а для нетбуков особенно! Значит я решил так, и так и будет, всю графику рисую "за экраном", далее вывожу раз в 200мс вкупе вне зависимости от того менялось что-то или нет(чтобы сократить свою работу). Да и применяю OpenGL, благо любой нетбук даже за 7000р уже поддерживает. Элементы управления(кнопки, ползунки и пр) - оставляю QML рисованные, поверх. причем в отдельном потоке. Но тут плохо, что эффекты(лоск) типа теней и пр. придется отключать и не использовать управляющие "контроллы", отображение которых зависит от быстрых динамически меняющихся входных данных (медленные состояния типа ON/OFF можно оставить) В общем еще раз Вердикт - в Qt 8.4.3. - применение QML1.0 лишь дешевый рекламный "лоск", для серьезных программ не подходящий... Это Объективное суждение основанное на опыте и оно безоговорочное. Конечно кто-то может продолжать насиловать "моск" пытаясь доказать что кто-то что-то там делает "не оптимально", но мне надо зарабатывать $$$ и "завтра" Ждем-с QML2.0 ;)))) !!! Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Igors от Декабрь 25, 2012, 10:36 В общем еще раз Вердикт - в Qt 8.4.3. - применение QML1.0 лишь дешевый рекламный "лоск", для серьезных программ не подходящий... Это Объективное суждение основанное на опыте и оно безоговорочное. [/offtop] Если Вы хотите чтобы Вас слушали - говорите тише а не громче :) Не надо утверждать что Ваш вывод объективен и безоговорочен - это лишь вызовет реакцию "доказать обратное". Скромное "слово практика" имеет куда больший эффект :) Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Bepec от Декабрь 25, 2012, 10:49 При всем уважении, с такой частотой опрашивать используя стандартный COM port API (или Virtual UART-USB) for Win7/XP на "среднестатистическом" компьютере невозможно Кхм. Видимо мы из другого измерения :D Мой "среднестатический" нормально тянет общение до 4 мс.Другой вопрос, что тут нужна довольно умная реализация протокола :) Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: ctin от Декабрь 25, 2012, 12:44 0x0001
У Вас цикл - открывание порта, обмен данными, закрывание. У меня: открыл порт, очередь комманд (считывание температуры, состояния, отправка данных), закрыл порт. Естественно 3мс - это время обработки команды, с записи до приема. И то если команда маленькая а скорость высокая (115200). На 9600 уже 30мс. И да, я прибавил к Quick 1.1 плагин Desctop components и все стало совсем хорошо. Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Bepec от Декабрь 25, 2012, 12:50 Расчёт времени на передачу байта при заданных скоростях рассчитывается по формуле :)
И 10-15 мс это нормально. Даже скорее медленно. Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: xokc от Декабрь 25, 2012, 13:33 Слушайте, что-то я потерялся. Проблема всё-таки в малой производительности QML или недостаточной скорости опроса COM порта под Windows?
Я правильно понимаю, что топикстартер пришел к выводу, что даже простейший QML-элемент интерфейса не успевает изменять свое состояние за время, соизмеримое с реакцией человеческого зрения (1/25 сек = 40 мс)? И чем в таком случае тут поможет QML2? Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Bepec от Декабрь 25, 2012, 13:52 Видимо ничем.
По идее общение раз в 150 мс выдержит любая система. Другое дело, что его код неоптимален или имеет где нить закавыку. PS трудно разобраться, гораздо проще пусть он перепишет :D Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: OKTA от Декабрь 26, 2012, 12:27 Знаете, сегодня заметил, что у меня c++ тормозит - уж не знаю, может новую версию ждать? Или на Delphi перейти?
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Bepec от Декабрь 26, 2012, 12:28 Жди С++ тринадцатый стандарт. Там введут функцию сделать всё хорошо :D
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: OKTA от Декабрь 26, 2012, 13:03 ;D
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Пантер от Декабрь 26, 2012, 13:18 Жди С++ тринадцатый стандарт. Там введут функцию сделать всё хорошо :D Ага, Александреску ее на шаблонах пишет. Только для сборки нужно будет пару терабайт оперативы.Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Bepec от Декабрь 26, 2012, 13:32 Нужен будет терафлоп оперативы :D
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Igors от Декабрь 26, 2012, 13:38 Знаете, сегодня заметил, что у меня c++ тормозит - уж не знаю, может новую версию ждать? Или на Delphi перейти? А в чем эти тормоза выражаются? Можно пример?Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: xokc от Декабрь 26, 2012, 13:46 Жди С++ тринадцатый стандарт. Там введут функцию сделать всё хорошо :D Ага, Александреску ее на шаблонах пишет. Только для сборки нужно будет пару терабайт оперативы.Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Patrin Andrey от Декабрь 26, 2012, 14:06 "всё_хорошо___везде___у_всех___одновременно()". Счастье_всем_и_каждому_и_пусть_никто_не_уйдет_обиженным()Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: Bepec от Декабрь 26, 2012, 14:40 Сломаем_всем_ноги_и_пусть_никто_не_уйдет_обиженным_Счастья_всем_и_каждому()
Название: Re: qml:: вердикт по опыту эксплуатации 6 мес. Отправлено: OKTA от Декабрь 26, 2012, 16:04 положить_500000_евро_на_счет()
|