David Edmundson has uploaded a new change for review. https://gerrit.vesnicky.cesnet.cz/r/214
Change subject: Do not keep reparsing plasmarc configuration ...................................................................... Do not keep reparsing plasmarc configuration KConfig->reparseConfiguration is expensive. It throws away our cached values. The Units constructor was calling this every single time. Units is created a _lot_; once per applet and once per FrameSVGItem. This meant we were reloading the same config ~100 times on startup for no reason. Perf showed this as being ~5% of the total startup time. - 7.47% 0.00% plasmashell libKF5ConfigCore.so.5.5.0 [.] KConfig::reparseConfiguration() - KConfig::reparseConfiguration() + 66.51% Units::settingsFileChanged(QString const&) + 25.95% KConfig::KConfig(QString const&, QFlags<KConfig::OpenFlag>, QStandardPaths::StandardLocation) + 3.93% KDesktopFile::KDesktopFile(QString const&) + 3.61% Units::settingsFileChanged(QString const&) Change-Id: Ia70b7001ba473c8063e6c999b8e4233ea5b206f5 --- M src/declarativeimports/core/units.cpp M src/declarativeimports/core/units.h 2 files changed, 20 insertions(+), 12 deletions(-) git pull ssh://gerrit.vesnicky.cesnet.cz:29418/plasma-framework refs/changes/14/214/1 diff --git a/src/declarativeimports/core/units.cpp b/src/declarativeimports/core/units.cpp index ba06553..43533df 100644 --- a/src/declarativeimports/core/units.cpp +++ b/src/declarativeimports/core/units.cpp @@ -1,6 +1,7 @@ /*************************************************************************** * Copyright 2013 Marco Martin <m...@kde.org> * * Copyright 2014 Sebastian Kügler <se...@kde.org> * + * Copyright 2014 David Edmundson <davidedmuns...@kde.org> * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -59,8 +60,8 @@ connect(KDirWatch::self(), &KDirWatch::dirty, this, &Units::settingsFileChanged); // ... but also remove/recreate cycles, like KConfig does it connect(KDirWatch::self(), &KDirWatch::created, this, &Units::settingsFileChanged); - // Trigger configuration read - settingsFileChanged(plasmarc); + // read configuration + updatePlasmaRCSettings(); } Units::~Units() @@ -70,18 +71,24 @@ void Units::settingsFileChanged(const QString &file) { if (file.endsWith(plasmarc)) { - - KConfigGroup cfg = KConfigGroup(KSharedConfig::openConfig(plasmarc), groupName); - cfg.config()->reparseConfiguration(); - const int longDuration = cfg.readEntry("longDuration", defaultLongDuration); - - if (longDuration != m_longDuration) { - m_longDuration = longDuration; - emit durationChanged(); - } + KSharedConfigPtr cfg = KSharedConfig::openConfig(plasmarc); + cfg->reparseConfiguration(); + updatePlasmaRCSettings(); } } +void Units::updatePlasmaRCSettings() +{ + KConfigGroup cfg = KConfigGroup(KSharedConfig::openConfig(plasmarc), groupName); + const int longDuration = cfg.readEntry("longDuration", defaultLongDuration); + + if (longDuration != m_longDuration) { + m_longDuration = longDuration; + emit durationChanged(); + } +} + + void Units::iconLoaderSettingsChanged() { // These are not scaled, we respect the user's setting over dpi scaling diff --git a/src/declarativeimports/core/units.h b/src/declarativeimports/core/units.h index e1d9bde..a469423 100644 --- a/src/declarativeimports/core/units.h +++ b/src/declarativeimports/core/units.h @@ -164,11 +164,12 @@ private Q_SLOTS: void iconLoaderSettingsChanged(); - void settingsFileChanged(const QString &settings); + void settingsFileChanged(const QString &file); private: void updateDevicePixelRatio(); void updateSpacing(); + void updatePlasmaRCSettings(); /** * @return The dpi-adjusted size for a given icon size */ -- To view, visit https://gerrit.vesnicky.cesnet.cz/r/214 To unsubscribe, visit https://gerrit.vesnicky.cesnet.cz/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia70b7001ba473c8063e6c999b8e4233ea5b206f5 Gerrit-PatchSet: 1 Gerrit-Project: plasma-framework Gerrit-Branch: master Gerrit-Owner: David Edmundson <da...@davidedmundson.co.uk> Gerrit-Reviewer: Sebastian Kügler <se...@kde.org> _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel