help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Amazing Performance Difference between vec[] and iterators


From: Bernd Strieder
Subject: Re: Amazing Performance Difference between vec[] and iterators
Date: Wed, 12 Jul 2006 16:20:58 +0200
User-agent: KNode/0.10.2

Hello,

Paulo Matos wrote:

> I got these times:
> $ time ./vec
> 5030 elements in array.
> sum: 27665
> 
> real    0m7.123s
> user    0m7.108s
> sys     0m0.008s
> 
> $ time ./vec-iter
> 5030 elements in array.
> sum: 27665
> 
> real    0m4.699s
> user    0m4.672s
> sys     0m0.020s
> 
> Any comments on these results? They don't seem intuitive to me. Why
> the difference?

> LANG=C g++ -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.1.1/configure --prefix=/net/opt/gcc-4.1.1
--enable-languages=c,c++ --with-system-zlib --enable-shared
--enable-__cxa_atexit --enable-threads=posix
Thread model: posix
gcc version 4.1.1

> g++ -o vec2 -O3 vec2.cc
> g++ -DITER -o veciter2 -O3 vec2.cc
> time ./vec2
5030 elements in array.
sum: 27665

real    0m5.666s
user    0m5.604s
sys     0m0.033s
> time ./veciter2
5030 elements in array.
sum: 27665

real    0m6.588s
user    0m6.537s
sys     0m0.037s
> g++ -o vec2 -O3 -funroll-loops vec2.cc
> g++ -DITER -o veciter2 -O3 -funroll-loops vec2.cc
> time ./vec2
5030 elements in array.
sum: 27665

real    0m3.209s
user    0m3.162s
sys     0m0.017s
> time ./veciter2
5030 elements in array.
sum: 27665

real    0m2.846s
user    0m2.818s
sys     0m0.015s

I can't reproduce the extreme difference, but adding -funroll-loops to
-O3 changes the picture for me, the iterator version gets the fastest,
and both remarkably better. I think the optimization in 4.1.1 is far
from finished, and will never be because of 4.2. In older releases the
iterator version seems consistenly worse.

Bernd Strieder




reply via email to

[Prev in Thread] Current Thread [Next in Thread]