С тех времен выяснилось, что производительность Qt, всё же, недостаточна, и её прокачивали ещё и ещё. Так что теперь это, должно быть, самый производительный GUI-тулкит на свете.
Я открываю глаза и вижу, что QPainter тормозной как пц. Не, я не хочу сказать, что cairo лучше - я просто не знаю. Но то, что отрисовка 96 небольших пиксмапов на сцене без трансформаций дает только 100 FPS (при полной загрузке проца) - это не ок. А с включением OpenGL - еще ниже.
Просто сцене дается QGLWidget. Никогда QGraphicsScene не юзал? То, что рендеринг шрифтов, рисование и т.п. замедляются - это даже в доках написано. А вот что пиксмапы процентов на 30 тормозятся - сам хз почему.
Не выйдет. Суть(тм): сцена разбита на квадраты (типа тайлов в шиндовс 8), квадраты зекешированы - они не рендерятся при перерисовке сцены. На каждом квадрате есть прямоугольник 20*40, который положен сверху и отображает пиксмап (который потом будет генериться в другом потоке своим алгоритмом; пока он статичен). Прямоугольники просто лежат на квадратах, но не вложены в них (нету child-parent, чтобы квадрат оставался закешированым, а прямоугольники рендерились). Прямоугольники перерисовываются с максимальной скоростью, которая дает всего 100 FPS на моем рабочем Xeon Sandybridge @ 3.5 GHz (про i5 я сбрехал, он будет только потом на финальном железе). Перерисовка всей сцены целиком дает тот же FPS. Общий размер сцены - где-то 1000*600. ОС - венда.
Игрался с отрисовкой, заметил, что тормоза именно на любых операциях QPainter. Сильно замедляют шрифты, чуть меньше - всякие rect/roundedRect/etc, еще меньше - пиксмапы.
С тех времен выяснилось, что производительность Qt, всё же, недостаточна, и её прокачивали ещё и ещё. Так что теперь это, должно быть, самый производительный GUI-тулкит на свете.
+1, при переходе от Qt 4.x на Qt 5.x в одних только Qt Widgets я увидел огромный рывок производительности минимум раза в два (я просто рендерил картинки в QPaint, код не менялся для обоих версий Qt)...
Qt Quick - адовый тормоз пока что, однако виджеты просто летают.
Кста... Прошу прощения за оффтоп, но на всякий случай пожалуй отправлю господина не-ватника pavval из прогрессивного класса - в игнор. К конструктивной критике готов, но вырос из наивного возраста.
С/С работает только в рамках одного процесса! IPC - межпроцессное взаимодействие, INTER-PROCESS COMMUNICATION. Если используя Dbus, TCP/IP, Shared Memory или любую другую технологию IPC эмитируешь вызов сигнал слота внутри процесса, ты используешь какую-то технологию IPC для взаимодействия процессов а не сам С/С. Сигнал Qt не может дернуть слот другого процесса, значит IPC не является и использоваться в качестве IPC не может, точка.
/0 IPC в данном случае ни в одном месте не сигнал слот, а некий «network connection» очевидно по tcp либо udp. Прозрачное использование технологий IPC из С/С никак не делает сам С/С технологией IPC. У меня тоже есть свой велосипед для дерганья С/С по http.
Qt Quick - адовый тормоз пока что, однако виджеты просто летают.
У меня соседня команда на QML получила ту производительность, за которой в предыдущем проекте на виджетах гонялась год (и достигла ее путем рендеринга через OpenGL текстур, которые в фоновом потоке собирались с QPainter). А с QML оно просто взлетело как есть и не тормозит. Сам в ту степь не смотрел, но результат налицо.
Но в то же самое время их Qt Components для QML написаны так, что ощутимо подтормаживают. Запускаю один из стандартных примеров и наблюдаю как оно жрет 10-15% CPU, около 20-25% GPU. При этом окно таскается с небольшим «подлагиванием».