
I'm in the process of writing a logging library and I noticed that each call to print out ptime took about ~50us. Even just printing out the duration time_of_day cost ~20us. I'm using boost1.43 with g++ (GCC) 4.4.3 g++ -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread -DNDEBUG I was able to do the same thing for <1us not using stream ops (see code below). Does anyone care to optimize this stuff? I'm considering specializing my own boost::date_time::ostream_time_duration_formatter to override to slow impl. template<typename int_t> void printDecimal(int_t d,int places,char* out){ int_t rest=d; for(int i=0;i<places;i++){ out[places-i-1]= '0'+(rest%10); rest/=10; } } void printDuration(const boost::posix_time::time_duration& d,char* out){ int64_t ticks=d.ticks(); int64_t us=ticks%1000000; int64_t r1=ticks/1000000; int64_t s=r1%60; int64_t r2=r1/60; int64_t m=r2%60; int64_t h=r2/60; printDecimal(h,2,out); out[2]=':'; printDecimal(m,2,out+3); out[5]=':'; printDecimal(s,2,out+6); out[8]='.'; printDecimal(us,6,out+9); } .. char buf[32]; printDuration(pt.time_of_day(),buf); std::cout<< buf <<" -\n"; // <1us //std::cout<< pt.time_of_day() <<" -\n"; // ~15us Chris