diff options
author | John Layt <jlayt@kde.org> | 2013-09-26 16:51:48 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-31 22:01:40 +0100 |
commit | 1da1259c281f2098ae11d928f1664cf00d379076 (patch) | |
tree | ebc6734d64d7f55763657da197ee55ca235eb8d4 /src | |
parent | e7db02e79eec24015fcc4c2d2bc56c8c40c50e42 (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')
-rw-r--r-- | src/corelib/tools/qdatetime.cpp | 14 |
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; } |