LINUX.ORG.RU

Как отключить тормоза в Qt5?

 


0

2

Для примера qterminal. Собранный с Qt4, работает практически так же шустро, как терминалы на GTK.
Но если его собрать с Qt5 начинается жесть: переключение табов (клик мышкой/комбинацией с клавиатуры) занимает чуть больше секунды, скроллинг тормозит и т.д. И так с любым софтом на Qt5.
Пробовал разные варианты QT_GRAPHICSSYSTEM (raster/native/opengl) - разницы нет. Если эта опция вообще как-то влияет на Qt5...
Или всё бестолку и Qt5 только для скайлейков+?

★★★★★

Никак. Кстати, если ещё сделаешь:

ldd `which qterminal`

То узришь, что Qt 5 версия теперь зависит от OpenGL, ну и 30 МБ ICU-хлама. Ну и dload на всяких там QPA-плагинов.

Разработчики Qt 5 поняли, что тулкит стал раздутым и перегруженным говном и готовят облегчённую версию: Qt Lite.

https://blog.qt.io/blog/2016/08/18/introducing-the-qt-lite-project-qt-for-any...

https://www.opennet.ru/opennews/art.shtml?num=44991

Остаётся только ждать ебилдов.

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

Криворучек тред. У меня qterminal работает без видимых задержек.

Как выпрямить ручки, подскажи? Только чур без замены i5-2500 на i7-6700K.

Lavos ★★★★★
() автор топика

Заметил странную штуку: тормозов становится заметно меньше, если не использовать шрифт Liberation Mono.
С Cousine табы переключаются быстро, с Liberation Mono по полторы секунды. Проверено на qterminal и konsole.
Это как так? У Qt5 какие-то проблемы с Liberation? Как это вообще от шрифта может зависеть?

Lavos ★★★★★
() автор топика

Ждём Qt 5.8 с софтварным рендерингом QtQuick

ZenitharChampion ★★★★★
()

Можеть быть из-за тяжёлого рендера?

snatch3r
()

ждать и надеяться, когда знатоки, не исключая ЛОРа запилят 5tQ

anonymous
()
Ответ на: комментарий от greenman

Я имею в виду из нужного мне. Для документов хватает Evince, а Krita я бы поставил, наверно, если бы мне надо было рисовать.

anonymous
()

Готов поспорить, что у ТСа - гента.

Deleted
()
Ответ на: комментарий от EXL

То узришь, что Qt 5 версия теперь зависит от OpenGL, ну и 30 МБ ICU-хлама.

Ты упарвываешься, или правда не понимаешь, что NEEDED не загружает в память неиспользуемые бибилотеки и тем более не выполняет их код целиком на каждый чих?

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

УМВР. Увы, большего без дополнительной информации не подскажу. Посмотри, может, в /var/log/messages что есть

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

Как ни крути, стартуют Qt5-приложения гораздо дольше, чем Qt4-приложения. Лень разбираться, кто виноват: ICU, или всяких хлам вроде dlopen libqxcb.so -> libQt5DBus, libQt5XcbQpa. В Qt4 было всё просто: QtGui + QtCore и поехали без всяких там NEEDED, функционал которых не используется, однако болтается соплёй.

К чему OpenGL по-дефолту линкуется к обычной программе на QtWidgets, которая этот OpenGL вообще не использует? В официальных пакетах так. А потом юзеры маются: www.linux.org.ru/search.jsp?q=cannot find lGL&range=ALL&interval=ALL&...

Вот эти необдуманные и плохо проработанные решения и отталкивают многих. В Qt 4 был порядок. OpenGL использовался модулем QtOpengl и не выходил за его пределы. А в Qt 5 они размазали его во множество модулей, начиная от QtGui и заканчивая QtQML. А сейчас сообразили, что драйвера-то говно и начали делать Qt Lite с программным рендерингом.

Возникает вопрос, почему нельзя было сразу сделать программный рендеринг? Тем более в Qt 4 ОН БЫЛ!

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

почему нельзя было сразу сделать программный рендеринг?

в виджетах как был програмный рендеринг так и есть, никакие gl-контексты в виджетовом приложении не инициализируются.

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

никакие gl-контексты в виджетовом приложении не инициализируются.

Вот в том и суть, что не инициализируются, но GL-библиотека тянется. И тянется она не из-за QtWidgets, а из-за QtGui, в котором есть возможность проинициализировать GL-контекст. А поскольку QtWidgets-приложение существует нераздельно с библиотекой QtGui, то и наследует все её зависимости. Вот только парадокс опять в том, что 99.99% QtWidgets-приложений:

никакие gl-контексты в виджетовом приложении не инициализируют

А те 0.01%, что инициализируют, могли бы обойтись отдельной библиотекой. Разумно было бы вынести всю OpenGL-овую мишуру в QtGlGui / QtGuiGl, раз они хотят __модульности__, негоже это, когда приложение зависит от библиотеки, функционал которой НИКОГДА ею не будет использован.

Вот и получается, что Qt 5 в одном месте сильно расчленили (вот эти QPA, плагины форматов изображений и.т.д, которые усложнили деплой в несколько раз), а в другом месте — слепили всё в один комок.

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

Вот в том и суть, что не инициализируются, но GL-библиотека тянется

Все понятно, решиения два: 1) носи шапочку из фольги 2) собирай Qt с выключенным opengl

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

А ответа на вопрос ЗАЧЕМ так было сделано у тебя нет?

Ты ведь один из Qt-разрабов.

Я уже надел шапочку из фольги и теперь хочу знать, например, почему вы выпиливали программную отрисовку в том же QtQuick из Qt 5 (она была в Qt 4), а теперь впиливаете обратно в Qt Lite?

Почему при всей своей модульности Qt 5 остаются вот такие вот шерховатости с этим самым OpenGL, который доставляет боли обывателям (ссылка была выше). Ведь ничего не стоит взять и дропнуть всё OpenGL'ое в отдельные модули.

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

Охохо. Если принять во внимание, что весь пригодный к использованию софт написан именно на кутях, то твои тараканы в голове становятся весьма очевидны. Пожалуйста, не подходи к людям.

anonymous
()
Ответ на: комментарий от EXL

Ты ведь один из Qt-разрабов.

Мое участи на 99% ограничено QtWebKit, поэтому за всех говорить не могу

почему вы выпиливали программную отрисовку в том же QtQuick из Qt 5 (она была в Qt 4)

Отрисовка QtQuick была переписана с нуля, читай про QtQuick 1 и QtQuick 2

а теперь впиливаете обратно в Qt Lite

к Qt Lite это вообще не имеет отношения, скорее к изменению лицензионной политики Digia по проприетарным «value added» компонентам в 5.7

Почему при всей своей модульности Qt 5 остаются вот такие вот шерховатости с этим самым OpenGL, который доставляет боли обывателям (ссылка была выше)

По сслыке обычные вопли неосиляторов, не умеющих в установку библиотек нужной битности. Такая проблема будет с любой сторонней библиотекой, а если сторонние библиотеки не использовать, то такие как ты начнуть кричать про NIH-синдром. Надеюсь, что когда-нибудь получится выпилить часть сбандленных библиотек из сорсов qtbase, есть кое-какие наработки по этому направлению

Ведь ничего не стоит взять и дропнуть всё OpenGL'ое в отдельные модули.

На первый взгляд кажется, что да, просто к всем модулям завязаным с qtdeclarative придется слинковать еще одну либу. Но бинарная совместимость нарушится, поэтому в 5.х такое изменение не прокатит точно. Да и профита, как я уже говорил, от него практически никакого нет

annulen ★★★★★
()
Ответ на: комментарий от robus
OpenGL version string: 3.0 Mesa 12.0.3

А при чем тут это? У меня из-за рендеринга ШГ (infinality-ultimate) тормозит Qt5.

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

Со стилем ultimate тормозит по полторы секунды переключение даже с пустой вкладки на другую пустую (черный экран + приглашение bash).
С другими стилями, например nyx, тормозит переключение на «флудящие» вкладки, например где что-нибудь компилируется, или tail -F на активные логи и т.д. Переключение на «статичную вкладку», например где mutt или mc открыты, происходит практически мгновенно.
Проблема наблюдается в новых версиях qterminal и konsole, в старых, которые на Qt4, такой проблемы нет. Из чего был сделан вывод, что проблема не в терминале, или ШГ, а в Qt5.

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

тормозит по полторы секунды переключение даже с пустой вкладки

В yakuake так с обычным. Но от infinality отказываться не хочется.

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

Я на i3wm + urxvt перешел. На GTK3/Qt5 житья нет, один вырвиглазный уродец, второй тормоз.

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

В yakuake так с обычным. Но от infinality отказываться не хочется.

У меня — нет. Использую yakuake-git на KF5/Qt5

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