diff options
Diffstat (limited to 'tests/benchmarks/corelib/time/qdatetime/tst_bench_qdatetime.cpp')
-rw-r--r-- | tests/benchmarks/corelib/time/qdatetime/tst_bench_qdatetime.cpp | 159 |
1 files changed, 82 insertions, 77 deletions
diff --git a/tests/benchmarks/corelib/time/qdatetime/tst_bench_qdatetime.cpp b/tests/benchmarks/corelib/time/qdatetime/tst_bench_qdatetime.cpp index 58303ade9b..1c86eae009 100644 --- a/tests/benchmarks/corelib/time/qdatetime/tst_bench_qdatetime.cpp +++ b/tests/benchmarks/corelib/time/qdatetime/tst_bench_qdatetime.cpp @@ -1,34 +1,25 @@ // Copyright (C) 2022 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QDateTime> #include <QTimeZone> #include <QTest> #include <QList> #include <qdebug.h> +#include <QtCore/private/qdatetime_p.h> class tst_QDateTime : public QObject { Q_OBJECT - enum : qint64 - { - SECS_PER_DAY = 86400, - MSECS_PER_DAY = 86400000, - JULIAN_DAY_1950 = 2433283, - JULIAN_DAY_1960 = 2436935, - JULIAN_DAY_1970 = 2440588, // Epoch - JULIAN_DAY_2010 = 2455198, - JULIAN_DAY_2011 = 2455563, - JULIAN_DAY_2020 = 2458850, - JULIAN_DAY_2050 = 2469808, - JULIAN_DAY_2060 = 2473460 - }; - static QList<QDateTime> daily(qint64 start, qint64 end); +#if QT_CONFIG(timezone) static QList<QDateTime> norse(qint64 start, qint64 end); +#endif + void decade_data(); private Q_SLOTS: + void create_data() { decade_data(); } void create(); void isNull(); void isValid(); @@ -37,27 +28,35 @@ private Q_SLOTS: void timeSpec(); void offsetFromUtc(); void timeZoneAbbreviation(); + void toMSecsSinceEpoch_data() { decade_data(); } void toMSecsSinceEpoch(); - void toMSecsSinceEpoch1950(); - void toMSecsSinceEpoch2050(); +#if QT_CONFIG(timezone) + void toMSecsSinceEpochTz_data() { decade_data(); } void toMSecsSinceEpochTz(); - void toMSecsSinceEpoch1950Tz(); - void toMSecsSinceEpoch2050Tz(); +#endif void setDate(); void setTime(); +#if QT_DEPRECATED_SINCE(6, 9) void setTimeSpec(); void setOffsetFromUtc(); +#endif void setMSecsSinceEpoch(); +#if QT_CONFIG(timezone) void setMSecsSinceEpochTz(); +#endif void toString(); void toStringTextFormat(); void toStringIsoFormat(); void addDays(); +#if QT_CONFIG(timezone) void addDaysTz(); - void addMSecs(); void addMSecsTz(); +#endif + void addMSecs(); +#if QT_DEPRECATED_SINCE(6, 9) void toTimeSpec(); void toOffsetFromUtc(); +#endif void daysTo(); void msecsTo(); void equivalent(); @@ -74,9 +73,37 @@ private Q_SLOTS: void fromStringIso(); void fromMSecsSinceEpoch(); void fromMSecsSinceEpochUtc(); +#if QT_CONFIG(timezone) void fromMSecsSinceEpochTz(); +#endif }; +using namespace QtPrivate::DateTimeConstants; +constexpr qint64 JULIAN_DAY_1 = 1721426; +constexpr qint64 JULIAN_DAY_11 = 1725078; +constexpr qint64 JULIAN_DAY_1890 = 2411369; +constexpr qint64 JULIAN_DAY_1900 = 2415021; +constexpr qint64 JULIAN_DAY_1950 = 2433283; +constexpr qint64 JULIAN_DAY_1960 = 2436935; +constexpr qint64 JULIAN_DAY_1970 = 2440588; // Epoch +constexpr qint64 JULIAN_DAY_2010 = 2455198; +constexpr qint64 JULIAN_DAY_2011 = 2455563; +constexpr qint64 JULIAN_DAY_2020 = 2458850; +constexpr qint64 JULIAN_DAY_2050 = 2469808; +constexpr qint64 JULIAN_DAY_2060 = 2473460; + +void tst_QDateTime::decade_data() +{ + QTest::addColumn<qint64>("startJd"); + QTest::addColumn<qint64>("stopJd"); + + QTest::newRow("first-decade-CE") << JULIAN_DAY_1 << JULIAN_DAY_11; + QTest::newRow("1890s") << JULIAN_DAY_1890 << JULIAN_DAY_1900; + QTest::newRow("1950s") << JULIAN_DAY_1950 << JULIAN_DAY_1960; + QTest::newRow("2010s") << JULIAN_DAY_2010 << JULIAN_DAY_2020; + QTest::newRow("2050s") << JULIAN_DAY_2050 << JULIAN_DAY_2060; +} + QList<QDateTime> tst_QDateTime::daily(qint64 start, qint64 end) { QList<QDateTime> list; @@ -85,7 +112,7 @@ QList<QDateTime> tst_QDateTime::daily(qint64 start, qint64 end) list.append(QDateTime(QDate::fromJulianDay(jd).startOfDay())); return list; } - +#if QT_CONFIG(timezone) QList<QDateTime> tst_QDateTime::norse(qint64 start, qint64 end) { const QTimeZone cet("Europe/Oslo"); @@ -95,12 +122,14 @@ QList<QDateTime> tst_QDateTime::norse(qint64 start, qint64 end) list.append(QDateTime(QDate::fromJulianDay(jd).startOfDay(cet))); return list; } - +#endif void tst_QDateTime::create() { + QFETCH(const qint64, startJd); + QFETCH(const qint64, stopJd); const QTime noon = QTime::fromMSecsSinceStartOfDay(43200); QBENCHMARK { - for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd) { + for (int jd = startJd; jd < stopJd; ++jd) { QDateTime test(QDate::fromJulianDay(jd), noon); Q_UNUSED(test); } @@ -172,64 +201,29 @@ void tst_QDateTime::timeZoneAbbreviation() void tst_QDateTime::toMSecsSinceEpoch() { - const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020); - QBENCHMARK { - for (const QDateTime &test : list) - test.toMSecsSinceEpoch(); - } -} - -void tst_QDateTime::toMSecsSinceEpoch1950() -{ - const auto list = daily(JULIAN_DAY_1950, JULIAN_DAY_1960); + QFETCH(const qint64, startJd); + QFETCH(const qint64, stopJd); + const auto list = daily(startJd, stopJd); QBENCHMARK { for (const QDateTime &test : list) test.toMSecsSinceEpoch(); } } - -void tst_QDateTime::toMSecsSinceEpoch2050() -{ - const auto list = daily(JULIAN_DAY_2050, JULIAN_DAY_2060); - QBENCHMARK { - for (const QDateTime &test : list) - test.toMSecsSinceEpoch(); - } -} - +#if QT_CONFIG(timezone) void tst_QDateTime::toMSecsSinceEpochTz() { - qint64 result; - const auto list = norse(JULIAN_DAY_2010, JULIAN_DAY_2020); - QBENCHMARK { - for (const QDateTime &test : list) - result = test.toMSecsSinceEpoch(); - } - Q_UNUSED(result); -} - -void tst_QDateTime::toMSecsSinceEpoch1950Tz() -{ - qint64 result; - const auto list = norse(JULIAN_DAY_1950, JULIAN_DAY_1960); - QBENCHMARK { - for (const QDateTime &test : list) - result = test.toMSecsSinceEpoch(); - } - Q_UNUSED(result); -} + QFETCH(const qint64, startJd); + QFETCH(const qint64, stopJd); + const auto list = norse(startJd, stopJd); -void tst_QDateTime::toMSecsSinceEpoch2050Tz() -{ qint64 result; - const auto list = norse(JULIAN_DAY_2050, JULIAN_DAY_2060); QBENCHMARK { for (const QDateTime &test : list) result = test.toMSecsSinceEpoch(); } Q_UNUSED(result); } - +#endif void tst_QDateTime::setDate() { const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020); @@ -248,6 +242,9 @@ void tst_QDateTime::setTime() } } +#if QT_DEPRECATED_SINCE(6, 9) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED void tst_QDateTime::setTimeSpec() { const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020); @@ -265,6 +262,8 @@ void tst_QDateTime::setOffsetFromUtc() test.setOffsetFromUtc(3600); } } +QT_WARNING_POP +#endif // 6.9 deprecation void tst_QDateTime::setMSecsSinceEpoch() { @@ -275,7 +274,7 @@ void tst_QDateTime::setMSecsSinceEpoch() test.setMSecsSinceEpoch(msecs); } } - +#if QT_CONFIG(timezone) void tst_QDateTime::setMSecsSinceEpochTz() { const qint64 msecs = qint64(JULIAN_DAY_2010 - JULIAN_DAY_1970 + 180) * MSECS_PER_DAY; @@ -285,7 +284,7 @@ void tst_QDateTime::setMSecsSinceEpochTz() test.setMSecsSinceEpoch(msecs); } } - +#endif void tst_QDateTime::toString() { const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2011); @@ -323,7 +322,7 @@ void tst_QDateTime::addDays() } Q_UNUSED(next); } - +#if QT_CONFIG(timezone) void tst_QDateTime::addDaysTz() { const auto list = norse(JULIAN_DAY_2010, JULIAN_DAY_2020); @@ -332,7 +331,7 @@ void tst_QDateTime::addDaysTz() QDateTime result = test.addDays(1); } } - +#endif void tst_QDateTime::addMSecs() { const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020); @@ -343,7 +342,7 @@ void tst_QDateTime::addMSecs() } Q_UNUSED(next); } - +#if QT_CONFIG(timezone) void tst_QDateTime::addMSecsTz() { const auto list = norse(JULIAN_DAY_2010, JULIAN_DAY_2020); @@ -352,7 +351,10 @@ void tst_QDateTime::addMSecsTz() QDateTime result = test.addMSecs(1); } } - +#endif +#if QT_DEPRECATED_SINCE(6, 9) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED void tst_QDateTime::toTimeSpec() { const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020); @@ -370,6 +372,8 @@ void tst_QDateTime::toOffsetFromUtc() test.toOffsetFromUtc(3600); } } +QT_WARNING_POP +#endif void tst_QDateTime::daysTo() { @@ -410,7 +414,7 @@ void tst_QDateTime::equivalentUtc() { bool result = false; const QDateTime other = QDateTime::fromMSecsSinceEpoch( - qint64(JULIAN_DAY_2010 - JULIAN_DAY_1970) * MSECS_PER_DAY, Qt::UTC); + qint64(JULIAN_DAY_2010 - JULIAN_DAY_1970) * MSECS_PER_DAY, QTimeZone::UTC); const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020); QBENCHMARK { for (const QDateTime &test : list) @@ -436,7 +440,7 @@ void tst_QDateTime::lessThanUtc() { bool result = false; const QDateTime other = QDateTime::fromMSecsSinceEpoch( - qint64(JULIAN_DAY_2010 - JULIAN_DAY_1970) * MSECS_PER_DAY, Qt::UTC); + qint64(JULIAN_DAY_2010 - JULIAN_DAY_1970) * MSECS_PER_DAY, QTimeZone::UTC); const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020); QBENCHMARK { for (const QDateTime &test : list) @@ -520,7 +524,7 @@ void tst_QDateTime::fromMSecsSinceEpoch() const int end = JULIAN_DAY_2020 - JULIAN_DAY_1970; QBENCHMARK { for (int jd = start; jd < end; ++jd) - QDateTime::fromMSecsSinceEpoch(jd * MSECS_PER_DAY, Qt::LocalTime); + QDateTime::fromMSecsSinceEpoch(jd * MSECS_PER_DAY); } } @@ -530,10 +534,10 @@ void tst_QDateTime::fromMSecsSinceEpochUtc() const int end = JULIAN_DAY_2020 - JULIAN_DAY_1970; QBENCHMARK { for (int jd = start; jd < end; ++jd) - QDateTime::fromMSecsSinceEpoch(jd * MSECS_PER_DAY, Qt::UTC); + QDateTime::fromMSecsSinceEpoch(jd * MSECS_PER_DAY, QTimeZone::UTC); } } - +#if QT_CONFIG(timezone) void tst_QDateTime::fromMSecsSinceEpochTz() { const int start = JULIAN_DAY_2010 - JULIAN_DAY_1970; @@ -544,6 +548,7 @@ void tst_QDateTime::fromMSecsSinceEpochTz() QDateTime test = QDateTime::fromMSecsSinceEpoch(jd * MSECS_PER_DAY, cet); } } +#endif QTEST_MAIN(tst_QDateTime) |