From 893eb51c751151c876a374f0aad5bd114434187e Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 19 Apr 2013 16:29:23 +0200 Subject: [PATCH] QtVersionNumber: Make it smaller and faster This yields 1% speedup on total startup with -noload Welcome Change-Id: Ib3f1e45032c4a2dbe21ae86a1df65d118f89cba1 Reviewed-by: hjk --- src/plugins/qtsupport/baseqtversion.cpp | 41 +++++-------------------- src/plugins/qtsupport/baseqtversion.h | 2 -- 2 files changed, 7 insertions(+), 36 deletions(-) diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index 4fc4204c24d..4f7c9d5b283 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -76,15 +76,9 @@ QtVersionNumber::QtVersionNumber(int ma, int mi, int p) QtVersionNumber::QtVersionNumber(const QString &versionString) { - if (!checkVersionString(versionString)) { + if (::sscanf(versionString.toLatin1().constData(), "%d.%d.%d", + &majorVersion, &minorVersion, &patchVersion) != 3) majorVersion = minorVersion = patchVersion = -1; - return; - } - - QStringList parts = versionString.split(QLatin1Char('.')); - majorVersion = parts.at(0).toInt(); - minorVersion = parts.at(1).toInt(); - patchVersion = parts.at(2).toInt(); } QtVersionNumber::QtVersionNumber() @@ -92,34 +86,13 @@ QtVersionNumber::QtVersionNumber() majorVersion = minorVersion = patchVersion = -1; } -bool QtVersionNumber::checkVersionString(const QString &version) const -{ - int dots = 0; - const QString validChars = QLatin1String("0123456789."); - foreach (const QChar &c, version) { - if (!validChars.contains(c)) - return false; - if (c == QLatin1Char('.')) - ++dots; - } - if (dots != 2) - return false; - return true; -} - bool QtVersionNumber::operator <(const QtVersionNumber &b) const { - if (majorVersion < b.majorVersion) - return true; - if (majorVersion > b.majorVersion) - return false; - if (minorVersion < b.minorVersion) - return true; - if (minorVersion > b.minorVersion) - return false; - if (patchVersion < b.patchVersion) - return true; - return false; + if (majorVersion != b.majorVersion) + return majorVersion < b.majorVersion; + if (minorVersion != b.minorVersion) + return minorVersion < b.minorVersion; + return patchVersion < b.patchVersion; } bool QtVersionNumber::operator >(const QtVersionNumber &b) const diff --git a/src/plugins/qtsupport/baseqtversion.h b/src/plugins/qtsupport/baseqtversion.h index 5c5c0b0cd72..c95b308f984 100644 --- a/src/plugins/qtsupport/baseqtversion.h +++ b/src/plugins/qtsupport/baseqtversion.h @@ -79,8 +79,6 @@ public: bool operator >=(const QtVersionNumber &b) const; bool operator !=(const QtVersionNumber &b) const; bool operator ==(const QtVersionNumber &b) const; -private: - bool checkVersionString(const QString &version) const; }; namespace Internal { class QtOptionsPageWidget; }