From 46ec170d2be226c41b910a3709434e60c4310e6f Mon Sep 17 00:00:00 2001 From: David Faure Date: Sun, 22 Apr 2018 22:26:10 +0200 Subject: Speed up QTimeZone::isTimeZoneIdAvailable by a factor 43 Creating and sorting a list of bytearrays just to check if one entry is present, is really overkill. By adding a new virtual method isTimeZoneIdAvailable() in the backend classes, we can do this much more efficiently. Implemented for Utc and Tz backends, the others fall back to the slow way. The new benchmark shows, in release mode: Before: 43 msecs per iteration (total: 86, iterations: 2) After: 1.1 msecs per iteration (total: 73, iterations: 64) Change-Id: Ic0d79a41d74e2ce6aa088fa7986c41d33902c36b Reviewed-by: Thiago Macieira --- src/corelib/tools/qtimezoneprivate_p.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/corelib/tools/qtimezoneprivate_p.h') diff --git a/src/corelib/tools/qtimezoneprivate_p.h b/src/corelib/tools/qtimezoneprivate_p.h index 4d357111f2..c9a5726216 100644 --- a/src/corelib/tools/qtimezoneprivate_p.h +++ b/src/corelib/tools/qtimezoneprivate_p.h @@ -128,6 +128,7 @@ public: virtual QByteArray systemTimeZoneId() const; + virtual bool isTimeZoneIdAvailable(const QByteArray &ianaId) const; virtual QList availableTimeZoneIds() const; virtual QList availableTimeZoneIds(QLocale::Country country) const; virtual QList availableTimeZoneIds(int utcOffset) const; @@ -204,6 +205,7 @@ public: QByteArray systemTimeZoneId() const override; + bool isTimeZoneIdAvailable(const QByteArray &ianaId) const override; QList availableTimeZoneIds() const override; QList availableTimeZoneIds(QLocale::Country country) const override; QList availableTimeZoneIds(int utcOffset) const override; @@ -323,6 +325,7 @@ public: QByteArray systemTimeZoneId() const override; + bool isTimeZoneIdAvailable(const QByteArray &ianaId) const override; QList availableTimeZoneIds() const override; QList availableTimeZoneIds(QLocale::Country country) const override; -- cgit v1.2.3