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>
bb10
John Layt 2013-09-26 16:51:48 +02:00 committed by The Qt Project
parent e7db02e79e
commit 1da1259c28
1 changed files with 8 additions and 6 deletions

View File

@ -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;
}