summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/benchmarks/corelib/time/qdatetime/main.cpp165
1 files changed, 57 insertions, 108 deletions
diff --git a/tests/benchmarks/corelib/time/qdatetime/main.cpp b/tests/benchmarks/corelib/time/qdatetime/main.cpp
index e616181bea..2730e7e18b 100644
--- a/tests/benchmarks/corelib/time/qdatetime/main.cpp
+++ b/tests/benchmarks/corelib/time/qdatetime/main.cpp
@@ -29,6 +29,7 @@
#include <QDateTime>
#include <QTimeZone>
#include <QTest>
+#include <QVector>
#include <qdebug.h>
class tst_QDateTime : public QObject
@@ -49,6 +50,9 @@ class tst_QDateTime : public QObject
JULIAN_DAY_2060 = 2473460
};
+ static QVector<QDateTime> daily(qint64 start, qint64 end);
+ static QVector<QDateTime> norse(qint64 start, qint64 end);
+
private Q_SLOTS:
void create();
void isNull();
@@ -98,6 +102,25 @@ private Q_SLOTS:
void fromMSecsSinceEpochTz();
};
+QVector<QDateTime> tst_QDateTime::daily(qint64 start, qint64 end)
+{
+ QVector<QDateTime> list;
+ list.reserve(end - start);
+ for (int jd = start; jd < end; ++jd)
+ list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ return list;
+}
+
+QVector<QDateTime> tst_QDateTime::norse(qint64 start, qint64 end)
+{
+ const QTimeZone cet("Europe/Oslo");
+ QVector<QDateTime> list;
+ list.reserve(end - start);
+ for (int jd = start; jd < end; ++jd)
+ list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet));
+ return list;
+}
+
void tst_QDateTime::create()
{
QBENCHMARK {
@@ -110,9 +133,7 @@ void tst_QDateTime::create()
void tst_QDateTime::isNull()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.isNull();
@@ -121,9 +142,7 @@ void tst_QDateTime::isNull()
void tst_QDateTime::isValid()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.isValid();
@@ -132,9 +151,7 @@ void tst_QDateTime::isValid()
void tst_QDateTime::date()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.date();
@@ -143,9 +160,7 @@ void tst_QDateTime::date()
void tst_QDateTime::time()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.time();
@@ -154,9 +169,7 @@ void tst_QDateTime::time()
void tst_QDateTime::timeSpec()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.timeSpec();
@@ -165,9 +178,7 @@ void tst_QDateTime::timeSpec()
void tst_QDateTime::offsetFromUtc()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.offsetFromUtc();
@@ -176,9 +187,7 @@ void tst_QDateTime::offsetFromUtc()
void tst_QDateTime::timeZoneAbbreviation()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.timeZoneAbbreviation();
@@ -187,9 +196,7 @@ void tst_QDateTime::timeZoneAbbreviation()
void tst_QDateTime::toMSecsSinceEpoch()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.toMSecsSinceEpoch();
@@ -198,9 +205,7 @@ void tst_QDateTime::toMSecsSinceEpoch()
void tst_QDateTime::toMSecsSinceEpoch1950()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_1950; jd < JULIAN_DAY_1960; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_1950, JULIAN_DAY_1960);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.toMSecsSinceEpoch();
@@ -209,9 +214,7 @@ void tst_QDateTime::toMSecsSinceEpoch1950()
void tst_QDateTime::toMSecsSinceEpoch2050()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2050; jd < JULIAN_DAY_2060; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2050, JULIAN_DAY_2060);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.toMSecsSinceEpoch();
@@ -220,11 +223,8 @@ void tst_QDateTime::toMSecsSinceEpoch2050()
void tst_QDateTime::toMSecsSinceEpochTz()
{
- QTimeZone cet = QTimeZone("Europe/Oslo");
qint64 result;
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet));
+ const auto list = norse(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
result = test.toMSecsSinceEpoch();
@@ -234,11 +234,8 @@ void tst_QDateTime::toMSecsSinceEpochTz()
void tst_QDateTime::toMSecsSinceEpoch1950Tz()
{
- QTimeZone cet = QTimeZone("Europe/Oslo");
qint64 result;
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_1950; jd < JULIAN_DAY_1960; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet));
+ const auto list = norse(JULIAN_DAY_1950, JULIAN_DAY_1960);
QBENCHMARK {
foreach (const QDateTime &test, list)
result = test.toMSecsSinceEpoch();
@@ -248,11 +245,8 @@ void tst_QDateTime::toMSecsSinceEpoch1950Tz()
void tst_QDateTime::toMSecsSinceEpoch2050Tz()
{
- QTimeZone cet = QTimeZone("Europe/Oslo");
qint64 result;
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2050; jd < JULIAN_DAY_2060; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet));
+ const auto list = norse(JULIAN_DAY_2050, JULIAN_DAY_2060);
QBENCHMARK {
foreach (const QDateTime &test, list)
result = test.toMSecsSinceEpoch();
@@ -262,9 +256,7 @@ void tst_QDateTime::toMSecsSinceEpoch2050Tz()
void tst_QDateTime::setDate()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (QDateTime test, list)
test.setDate(QDate::fromJulianDay(JULIAN_DAY_2010));
@@ -273,9 +265,7 @@ void tst_QDateTime::setDate()
void tst_QDateTime::setTime()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (QDateTime test, list)
test.setTime(QTime(12, 0, 0));
@@ -284,9 +274,7 @@ void tst_QDateTime::setTime()
void tst_QDateTime::setTimeSpec()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (QDateTime test, list)
test.setTimeSpec(Qt::UTC);
@@ -295,9 +283,7 @@ void tst_QDateTime::setTimeSpec()
void tst_QDateTime::setOffsetFromUtc()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (QDateTime test, list)
test.setOffsetFromUtc(3600);
@@ -307,9 +293,7 @@ void tst_QDateTime::setOffsetFromUtc()
void tst_QDateTime::setMSecsSinceEpoch()
{
qint64 msecs = qint64(JULIAN_DAY_2010 - JULIAN_DAY_1970 + 180) * MSECS_PER_DAY;
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (QDateTime test, list)
test.setMSecsSinceEpoch(msecs);
@@ -318,11 +302,8 @@ void tst_QDateTime::setMSecsSinceEpoch()
void tst_QDateTime::setMSecsSinceEpochTz()
{
- QTimeZone cet = QTimeZone("Europe/Oslo");
- QList<QDateTime> list;
const qint64 msecs = qint64(JULIAN_DAY_2010 - JULIAN_DAY_1970 + 180) * MSECS_PER_DAY;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet));
+ const auto list = norse(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (QDateTime test, list)
test.setMSecsSinceEpoch(msecs);
@@ -331,9 +312,7 @@ void tst_QDateTime::setMSecsSinceEpochTz()
void tst_QDateTime::toString()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2011; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2011);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.toString(QStringLiteral("yyy-MM-dd hh:mm:ss.zzz t"));
@@ -342,9 +321,7 @@ void tst_QDateTime::toString()
void tst_QDateTime::toStringTextFormat()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2011; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2011);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.toString(Qt::TextDate);
@@ -353,9 +330,7 @@ void tst_QDateTime::toStringTextFormat()
void tst_QDateTime::toStringIsoFormat()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2011; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2011);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.toString(Qt::ISODate);
@@ -364,10 +339,8 @@ void tst_QDateTime::toStringIsoFormat()
void tst_QDateTime::addDays()
{
- QList<QDateTime> list;
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QDateTime next;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
QBENCHMARK {
foreach (const QDateTime &test, list)
next = test.addDays(1);
@@ -377,10 +350,7 @@ void tst_QDateTime::addDays()
void tst_QDateTime::addDaysTz()
{
- QTimeZone cet = QTimeZone("Europe/Oslo");
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet));
+ const auto list = norse(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
QDateTime result = test.addDays(1);
@@ -389,10 +359,8 @@ void tst_QDateTime::addDaysTz()
void tst_QDateTime::addMSecs()
{
- QList<QDateTime> list;
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QDateTime next;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
QBENCHMARK {
foreach (const QDateTime &test, list)
next = test.addMSecs(1);
@@ -402,10 +370,7 @@ void tst_QDateTime::addMSecs()
void tst_QDateTime::addMSecsTz()
{
- QTimeZone cet = QTimeZone("Europe/Oslo");
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet));
+ const auto list = norse(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
QDateTime result = test.addMSecs(1);
@@ -414,9 +379,7 @@ void tst_QDateTime::addMSecsTz()
void tst_QDateTime::toTimeSpec()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.toTimeSpec(Qt::UTC);
@@ -425,9 +388,7 @@ void tst_QDateTime::toTimeSpec()
void tst_QDateTime::toOffsetFromUtc()
{
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.toOffsetFromUtc(3600);
@@ -438,9 +399,7 @@ void tst_QDateTime::daysTo()
{
const QDateTime other = QDateTime::fromMSecsSinceEpoch(
qint64(JULIAN_DAY_2010 - JULIAN_DAY_1970) * MSECS_PER_DAY);
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.daysTo(other);
@@ -451,9 +410,7 @@ void tst_QDateTime::msecsTo()
{
const QDateTime other = QDateTime::fromMSecsSinceEpoch(
qint64(JULIAN_DAY_2010 - JULIAN_DAY_1970) * MSECS_PER_DAY);
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
test.msecsTo(other);
@@ -465,9 +422,7 @@ void tst_QDateTime::equivalent()
bool result;
const QDateTime other = QDateTime::fromMSecsSinceEpoch(
qint64(JULIAN_DAY_2010 - JULIAN_DAY_1970) * MSECS_PER_DAY);
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
result = (test == other);
@@ -480,9 +435,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);
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
result = (test == other);
@@ -495,9 +448,7 @@ void tst_QDateTime::lessThan()
bool result = false;
const QDateTime other = QDateTime::fromMSecsSinceEpoch(
qint64(JULIAN_DAY_2010 - JULIAN_DAY_1970) * MSECS_PER_DAY);
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
result = (test < other);
@@ -510,9 +461,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);
- QList<QDateTime> list;
- for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd)
- list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0)));
+ const auto list = daily(JULIAN_DAY_2010, JULIAN_DAY_2020);
QBENCHMARK {
foreach (const QDateTime &test, list)
result = (test < other);