Boost logo

Boost :

Subject: Re: [boost] [boost.chrono] Slow down process (if specifing c++11)
From: Gaetano Mendola (mendola_at_[hidden])
Date: 2013-09-06 05:28:22


See my reply to Julien Ritard in the thread, just the simply
call to boost chrono even as last operation in the main slows it
down.

Regards
Gaetano Mendola

On 08/28/2013 10:48 PM, Vicente J. Botet Escriba wrote:
> Le 26/08/13 15:54, Gaetano Mendola a écrit :
>> Hi have tried the following code compiling it with gcc 4.6.3,
>> with four combinations:
>>
>> 1) -O3
>> 2) -O3 (commeting out the chrono call)
>> 3) -O3 -std=c++0x
>> 4) -O3 -std=c++0x (commenting out the chrono call)
>>
>> and I'm obtaining the following runtime values:
>>
>> 1) 8921 ms
>> 2) 8915 ms
>> 3) 9400 ms
>> 4) 8933 ms
>>
>> as you can see the combination: "c++11 and chrono call" slows down the entire
>> process. I have tried the same with gcc 4.8.1 and all times are more or less
>> the same.
>>
>> At this point I'm not sure if it's a problem of chrono with gcc 4.6.3 or
>> simply an issue of 4.6.3 disappeared in 4.8.1 series.
>>
>> Regards
>> Gaetano Mendola
> I don't know if changing the order could changes the results.
>
> gettimeofday(&myStart, 0);
>
> boost::chrono::time_point<boost::chrono::steady_clock> t1 = boost::chrono::high_resolution_clock::now();
>
> and
>
> std::cout << "t1: " << t1 << std::endl;
>
> gettimeofday(&myStop, 0);
>
> timersub(&myStop,&myStart,&myResult);
>
> std::cout << "Time: " << myResult.tv_sec*1000 + myResult.tv_usec/1000.0 << std::endl;
>
>
> Or to be neutral execute either the chrono computation either the timeval one.
>
> HTH,
> Vicente
>
>>
>> Here the code I have used:
>>
>> #include <iostream>
>> #include <boost/chrono.hpp>
>> #include <sys/time.h>
>> #include <math.h>
>>
>>
>> int main() {
>>
>> cpu_set_t myAffinityMask;
>> CPU_ZERO( &myAffinityMask );
>> CPU_SET(0, &myAffinityMask );
>> sched_setaffinity(0, sizeof(myAffinityMask), &myAffinityMask);
>>
>> volatile float* myMemoryA = new float[(1<<24)];
>> volatile float* myMemoryB = new float[(1<<24)];
>>
>> struct timeval myStart;
>> struct timeval myStop;
>> struct timeval myResult;
>>
>> boost::chrono::time_point<boost::chrono::steady_clock> t1 = boost::chrono::high_resolution_clock::now();
>>
>> gettimeofday(&myStart, 0);
>>
>> for (size_t i = 0; i < (1<<24); ++i) {
>> myMemoryA[i] = i;
>> myMemoryB[i] = i+1;
>> }
>> delete []myMemoryA;
>> delete []myMemoryB;
>>
>> for (size_t j = 0; j < 100; ++j) {
>> volatile float* myMemoryA = new float[(1<<24)];
>> volatile float* myMemoryB = new float[(1<<24)];
>> for (size_t i = 0; i < (1<<24); ++i) {
>> myMemoryA[i] *= sqrtf(myMemoryB[i]);
>> }
>> delete []myMemoryA;
>> delete []myMemoryB;
>> }
>> gettimeofday(&myStop, 0);
>>
>> timersub(&myStop,&myStart,&myResult);
>>
>> std::cout << "Time: " << myResult.tv_sec*1000 + myResult.tv_usec/1000.0 << std::endl;
>> std::cout << "t1: " << t1 << std::endl;
>> }
>>
>>
>>
>>
>
>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
>


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk