summaryrefslogtreecommitdiffstats
path: root/src/corelib/time
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2021-04-19 13:21:29 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2021-04-23 16:50:54 +0200
commit7c65935810b30922e62bfc5d366a81d04deb5ec1 (patch)
treead88b57e0f90688471b0fbe01139b60d7b4f9746 /src/corelib/time
parentc36f18b4497e8dd52842e10500a3bbc35513dc5e (diff)
Make zone-name part of date-time parsing a little faster
QDateTimeParser::findTimeZoneName()'s invalidZoneNameCharacter() check was using QLatin1String::contains(QChar), which converts the Latin-1 string to UTF-16 on each call, despite having pre-checked that the QChar is ASCII. So use memchr() instead. Change-Id: I011e2b4ba3be20711fc5005f62e4f9f6a392dd16 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/time')
-rw-r--r--src/corelib/time/qdatetimeparser.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/corelib/time/qdatetimeparser.cpp b/src/corelib/time/qdatetimeparser.cpp
index 2e27921717..e37ddbbda7 100644
--- a/src/corelib/time/qdatetimeparser.cpp
+++ b/src/corelib/time/qdatetimeparser.cpp
@@ -1734,8 +1734,8 @@ QDateTimeParser::findTimeZoneName(QStringView str, const QDateTime &when) const
// Collect up plausibly-valid characters; let QTimeZone work out what's
// truly valid.
const auto invalidZoneNameCharacter = [] (const QChar &c) {
- return c.unicode() >= 127u
- || (!c.isLetterOrNumber() && !QLatin1String("+-./:_").contains(c));
+ const auto cu = c.unicode();
+ return cu >= 127u || !(memchr("+-./:_", char(cu), 6) || c.isLetterOrNumber());
};
int index = std::distance(str.cbegin(),
std::find_if(str.cbegin(), str.cend(), invalidZoneNameCharacter));