summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
authorJohn Layt <jlayt@kde.org>2013-09-26 16:51:48 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-31 22:01:40 +0100
commit1da1259c281f2098ae11d928f1664cf00d379076 (patch)
treeebc6734d64d7f55763657da197ee55ca235eb8d4 /src/corelib
parente7db02e79eec24015fcc4c2d2bc56c8c40c50e42 (diff)
QDateTime - Optimize date() and time() methods
Optimize the performance of date() and time(), resulting in a one-third improvement, and subsequent improvements in all date/time based functions. Tested over 1000 iterations of the standard benchmarks, in msecs per iteration: Before After date()/time() 0.3 0.2 setDate()/setTime() 0.9 0.8 daysTo() 0.6 0.4 Note original performance before msecs storage was 0.06. Change-Id: Ie838e560ddf7129281531dc965af56ac19cce91d Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/tools/qdatetime.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index 5ce11a43aa..935fd65ae1 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -2682,10 +2682,10 @@ void QDateTimePrivate::getDateTime(QDate *date, QTime *time) const
{
msecsToTime(m_msecs, date, time);
- if (isNullDate())
+ if (date && isNullDate())
*date = QDate();
- if (isNullTime())
+ if (time && isNullTime())
*time = QTime();
}
@@ -3094,9 +3094,10 @@ bool QDateTime::isValid() const
QDate QDateTime::date() const
{
+ if (d->isNullDate())
+ return QDate();
QDate dt;
- QTime tm;
- d->getDateTime(&dt, &tm);
+ msecsToTime(d->m_msecs, &dt, 0);
return dt;
}
@@ -3108,9 +3109,10 @@ QDate QDateTime::date() const
QTime QDateTime::time() const
{
- QDate dt;
+ if (d->isNullTime())
+ return QTime();
QTime tm;
- d->getDateTime(&dt, &tm);
+ msecsToTime(d->m_msecs, 0, &tm);
return tm;
}