Boost logo

Boost :

Subject: [boost] [date_time] local_date_time noticeably faster than ptime
From: oneill1979 (oneill1979_at_[hidden])
Date: 2009-01-30 07:21:00

We noticed recently that using a local_date_time in tight loops was several
times faster than using a ptime object. As these are both based largerly on
the same template code this was a surprise. It appears this is caused by the
implementation of the operater+=/-= and was wondering if there was any
justification for the difference or if this was just an oversight.

   //! Local_date_time += time_duration
   local_date_time_base operator+=(const time_duration_type& td)
     this->time_ = time_system_type::add_time_duration(this->time_,td);
     return *this;

   time_type operator+=(const time_duration_type& td)
     time_ = (time_system::get_time_rep(date(), time_of_day() + td));
     return time_type(time_);

It looks like the ptime implementation is doing extra work to split the
ptime into date and time_duration components and if it is changed to follow
a similar pattern to that used in the local time the performance is then
   time_type operator+=(const time_duration_type& td)
     this->time_ = time_system::add_time_duration(this->time_, td);
     return time_type(time_);

I can only think that maybe this was done to work around an issue and in
which case should the same then be applied to the local time implementation?


View this message in context:
Sent from the Boost - Dev mailing list archive at

Boost list run by bdawes at, gregod at, cpdaniel at, john at