LINUX.ORG.RU

Прошло 8 лет. Так что сейчас просто сравнивают JS+HTML5+CSS3 на Chrome vs Firefox

vertexua ★★★★☆ ()

С тех времен выяснилось, что производительность Qt, всё же, недостаточна, и её прокачивали ещё и ещё. Так что теперь это, должно быть, самый производительный GUI-тулкит на свете.

asaw ★★★★★ ()
Последнее исправление: asaw (всего исправлений: 1)
Ответ на: комментарий от Pavval

Эм... Тормозной как пц.

Можно спорить о некоторых компонентах фреймворка, но вот гуйня в кутях лютая что ппц.

erfea ★★★★★ ()
Ответ на: комментарий от erfea

лютая

В какую сторону?

Я открываю глаза и вижу, что QPainter тормозной как пц. Не, я не хочу сказать, что cairo лучше - я просто не знаю. Но то, что отрисовка 96 небольших пиксмапов на сцене без трансформаций дает только 100 FPS (при полной загрузке проца) - это не ок. А с включением OpenGL - еще ниже.

Pavval ★★★★★ ()
Ответ на: комментарий от fluorite

Код в студию!

NDA

Особенно интересует «с включением OpenGL».

Просто сцене дается QGLWidget. Никогда QGraphicsScene не юзал? То, что рендеринг шрифтов, рисование и т.п. замедляются - это даже в доках написано. А вот что пиксмапы процентов на 30 тормозятся - сам хз почему.

Pavval ★★★★★ ()
Ответ на: комментарий от fluorite

Сравнивать со scene graph не пробовал?

Нет.

А объеденить pixmapы в оодну большую?

Не выйдет. Суть(тм): сцена разбита на квадраты (типа тайлов в шиндовс 8), квадраты зекешированы - они не рендерятся при перерисовке сцены. На каждом квадрате есть прямоугольник 20*40, который положен сверху и отображает пиксмап (который потом будет генериться в другом потоке своим алгоритмом; пока он статичен). Прямоугольники просто лежат на квадратах, но не вложены в них (нету child-parent, чтобы квадрат оставался закешированым, а прямоугольники рендерились). Прямоугольники перерисовываются с максимальной скоростью, которая дает всего 100 FPS на моем рабочем Xeon Sandybridge @ 3.5 GHz (про i5 я сбрехал, он будет только потом на финальном железе). Перерисовка всей сцены целиком дает тот же FPS. Общий размер сцены - где-то 1000*600. ОС - венда.

Игрался с отрисовкой, заметил, что тормоза именно на любых операциях QPainter. Сильно замедляют шрифты, чуть меньше - всякие rect/roundedRect/etc, еще меньше - пиксмапы.

Pavval ★★★★★ ()
Ответ на: комментарий от asaw

С тех времен выяснилось, что производительность Qt, всё же, недостаточна, и её прокачивали ещё и ещё. Так что теперь это, должно быть, самый производительный GUI-тулкит на свете.

+1, при переходе от Qt 4.x на Qt 5.x в одних только Qt Widgets я увидел огромный рывок производительности минимум раза в два (я просто рендерил картинки в QPaint, код не менялся для обоих версий Qt)...

Qt Quick - адовый тормоз пока что, однако виджеты просто летают.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от Pavval

Ну да, 146%.

Кста... Прошу прощения за оффтоп, но на всякий случай пожалуй отправлю господина не-ватника pavval из прогрессивного класса - в игнор. К конструктивной критике готов, но вырос из наивного возраста.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Ну игнор, не игнор а всерьез воспринимать человека который использовал сигнал/слот как IPC (с его слов)...

erfea ★★★★★ ()
Ответ на: комментарий от erfea

а всерьез воспринимать человека который использовал сигнал/слот как IPC

Оффтоп, но что в этом такого? http://qt-project.org/doc/qt-4.8/ipc.html Я вообще сигнал-слоты через TCP/IP юзал... ;) Не шучу, http://libqxt.bitbucket.org/doc/0.6/qxtrpcpeer.html

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

http://qt-project.org/doc/qt-4.8/ipc.html

С/С работает только в рамках одного процесса! IPC - межпроцессное взаимодействие, INTER-PROCESS COMMUNICATION. Если используя Dbus, TCP/IP, Shared Memory или любую другую технологию IPC эмитируешь вызов сигнал слота внутри процесса, ты используешь какую-то технологию IPC для взаимодействия процессов а не сам С/С. Сигнал Qt не может дернуть слот другого процесса, значит IPC не является и использоваться в качестве IPC не может, точка.

Я вообще сигнал-слоты через TCP/IP юзал... ;) Не шучу, http://libqxt.bitbucket.org/doc/0.6/qxtrpcpeer.html
The QxtRPCPeer class transmits Qt signals over a network connection

/0 IPC в данном случае ни в одном месте не сигнал слот, а некий «network connection» очевидно по tcp либо udp. Прозрачное использование технологий IPC из С/С никак не делает сам С/С технологией IPC. У меня тоже есть свой велосипед для дерганья С/С по http.

erfea ★★★★★ ()
Ответ на: комментарий от erfea

IPC - межпроцессное взаимодействие

Кому ты глаза открыть пытаешься? «В интернете кто-то не прав»? :)

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Qt Quick - адовый тормоз пока что, однако виджеты просто летают.

У меня соседня команда на QML получила ту производительность, за которой в предыдущем проекте на виджетах гонялась год (и достигла ее путем рендеринга через OpenGL текстур, которые в фоновом потоке собирались с QPainter). А с QML оно просто взлетело как есть и не тормозит. Сам в ту степь не смотрел, но результат налицо.

Pavval ★★★★★ ()
Ответ на: комментарий от erfea

а всерьез воспринимать человека который использовал сигнал/слот как IPC (с его слов)...

Я тебе ответил в том же треде. Но чукча же был не читатель.

Pavval ★★★★★ ()
Ответ на: комментарий от Pavval

Но в то же самое время их Qt Components для QML написаны так, что ощутимо подтормаживают. Запускаю один из стандартных примеров и наблюдаю как оно жрет 10-15% CPU, около 20-25% GPU. При этом окно таскается с небольшим «подлагиванием».

Amp ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.