KDE Developer
|
From quick testing it looks like this is really the issue, calling the slot directly (https://paste.kde.org/pk1yyptbz) fixes it and doesn't seem to break anything else. Why is that timer there anyway? I couldn't find anything in git log... I'll see how it works over the next couple of days. |
KDE Developer
|
David, did you profile how much time goes into the actual ARGB window creation and initial painting? It always seemed to me to be one of the biggest problems that we also had on P4 (and the main reason why I haven't considered Razor-Qt people insane for using QWidgets).
I guess it heavily depends on the graphics driver, but we might benefit from collecting these numbers. |
|
ARGB should not be a problem per se - QMenu, QToolTip and DnD windows use it or are made to use it by the styles in Qt4 and Qt5.
It *was* a problem in the early KDE4 times due to driver behavior, but afaics that's long gone. Creating GL contexts is notoriously slow on the nvidia blob, it should be "better" with the MESA drivers (but it's still expensive) - but thanks to ::setPersistentOpenGLContext() defaulting to true that (the GL context) should not be the troublemaker for plasmashell (at least lxr doesn't say it's disabled) Callgrinding the start of the calculator example in qmlviewer, clearly QMetaObject::metaCall and QMetaObject::activate stick out with the payload being in QDeclarativeBinding::qt_metacall and two or three private symbols in libQt5Declarative - the window/context is probably expensive, but falls far behind actual QML handling. This
Accelerates loading by factor >=30 If I import org.kde.plasma.components (but leave the rect), it's (still) faster by factor >=8 Using text: or iconSource: makes zero difference (once the icon is in the icon cache, I presume) All time is spent in QQuickWindow::setSource(), showing/mapping the window has virtually no costs (but we can't use it since the result shows artifacts on all drivers, I assume some FBO/VBO isn't cleared when becoming invalid) |
KDE Developer
|
@luebking
Thanks for testing this! |
KDE Developer
|
iirc it was due to some slot calling order, so was a quick and dirty fixthat stayed there... if you can patch it it would be appreciated |
KDE Developer
|
Sure, I will send patch tomorrow (if I don't find any issues, so far it looks fine). |
KDE Developer
|
100-150MB is a more realistic number, plus a considerable difference in boot time (and a not justifiable waste spending boot time and memory for things that may well end up never used for the whole sessions). Anyways loading immediately the full representation is an hack that should be not much more than an one liner, so it may be tested and some number gathered It may give an idea where to move (otherwise I consider it just meaningless speculations). I guess we'll end up preloading things (and eventually even unloading) based on statistical data gathered during session usage. |
KDE Developer
|
To add on it, for sure QtQuick has issues, a technology like that needs *a lot* of years to perfect and is just on its infancy, but I still think is the best option moving forward in the future. To do all the work and all the features we did in two years, with pure C++ and QWidgets would have taken at least 5-6 years (and not everything actually possible probably), Scene based, declarative systems seems pretty much the direction a lot of the world is going right now, because while it does have costs, that's undeniable, what you can offer to the user UI-wise is just a lot more. |
|
For a comparism, creating a QToolButton (inc. ensurePolished() and adjustSize()) is 3,000 times faster to achieve the same result.
|
Registered Member
|
That was me and I thank you very much for commenting here.
I believe you but the feeling hasn't changed and Plasma still take way too much time to respond.
I don't want to be ungrateful but if we follow what you say Plasma is bad QML because it's slow ?
Ok thanks for the clarification.
A little option to load everything at boot can be a good compromise in the meantime. Maybe even make it the default for now. I don't mind using more RAM and have a boot that is 20s longer if Plasma 5 is snappy.
I think that now Plasma is more mature a little bit of optimisations will be good
You are very optimistic about QtQuick and I hope the (not so distant) future will prove you are right. |
Registered Member
|
|
Registered Member
|
On my system it really was something like 50MB. Even if it's 200MB I prefer this to a sluggish desktop
If it's as easy as you say it should be done as soon as possible. As an option maybe. The user experience will improve a lot and like I said, I (and a lot of people I think) don't mind using more RAM and have a boot that is 20s longer if Plasma 5 is snappy |
Registered Member
|
You mean QtWidget vs QtQuick ? If that's the case I understand why Plasma 5 feel like that. |
Registered Member
|
I'm afraid that we won't see any speed improvement in Plasma 5 for a long time...
David Edmunson barely (and, I can understand that, is probably bothered to) answer and it feels like he don't really care to make a workaround for the time being like an option to load everything at login. If I'm wrong David, just say it. |
Registered Member
|
I just tested, for fun, the Nouveau drivers and Plasma 5 is much faster !
It's not as fast as Plasma 4 but it's maybe 2 or 3 times faster than with the Nvidia driver. The lag on first click is not gone but it's very little now (except with the calendar plasmoid). |
Registered users: bartoloni, Bing [Bot], Google [Bot], Yahoo [Bot]