diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2015-05-17 16:44:07 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2015-06-19 16:29:41 +0000 |
commit | eb5654788b8c1662a4210e6c76c98abd509cf64f (patch) | |
tree | dac5ee0cbb8c0c40acacbf824a44e70db3f63d4a /src/corelib/io/qsettings.cpp | |
parent | e2d83802a036c68ff9d7dc96a074f3b11a023249 (diff) |
Micro-optimize QSettingsPrivate::processChild() and its users
...by using QStringRef instead of QString, avoiding one
memory allocation in the case of spec != AllKeys and
key containing a '/'.
Also calls one less non-inline function, since
QStringRef::truncated() is inline.
Change-Id: Id5eb203006a3857508c5d3f4b729cde1a5170d58
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/io/qsettings.cpp')
-rw-r--r-- | src/corelib/io/qsettings.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index 977cc107e7..2ae89af356 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -299,7 +299,7 @@ QSettingsPrivate *QSettingsPrivate::create(const QString &fileName, QSettings::F } #endif -void QSettingsPrivate::processChild(QString key, ChildSpec spec, QMap<QString, QString> &result) +void QSettingsPrivate::processChild(QStringRef key, ChildSpec spec, QMap<QString, QString> &result) { if (spec != AllKeys) { int slashPos = key.indexOf(QLatin1Char('/')); @@ -312,7 +312,7 @@ void QSettingsPrivate::processChild(QString key, ChildSpec spec, QMap<QString, Q key.truncate(slashPos); } } - result.insert(key, QString()); + result.insert(key.toString(), QString()); } void QSettingsPrivate::beginGroupOrArray(const QSettingsGroup &group) @@ -1292,14 +1292,14 @@ QStringList QConfFileSettingsPrivate::children(const QString &prefix, ChildSpec &confFile->originalKeys)->lowerBound( thePrefix); while (j != confFile->originalKeys.constEnd() && j.key().startsWith(thePrefix)) { if (!confFile->removedKeys.contains(j.key())) - processChild(j.key().originalCaseKey().mid(startPos), spec, result); + processChild(j.key().originalCaseKey().midRef(startPos), spec, result); ++j; } j = const_cast<const ParsedSettingsMap *>( &confFile->addedKeys)->lowerBound(thePrefix); while (j != confFile->addedKeys.constEnd() && j.key().startsWith(thePrefix)) { - processChild(j.key().originalCaseKey().mid(startPos), spec, result); + processChild(j.key().originalCaseKey().midRef(startPos), spec, result); ++j; } |