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: address@hidden
Subject: Re: Amazing Performance Difference between vec[] and iterators
Date: 12 Jul 2006 02:22:28 -0700
User-agent: G2/0.2

Paulo Matos wrote:
> Hi all,
>
> I've wanted to know if there was any performance difference between
> using:
> for(vector<int>::const_iterator it = v.begin(); it != v.end(); ++it)
>
> and
>
> for(unsigned int k = 0; k < v.size(); ++k)
>
> and it seems there is with gcc 4.1.1, using -O3, the later is almost
> two times slower.
> The program is at:
> http://sat.inesc-id.pt/~pocm/archive/vec.cc
> Then do:
> $ g++ -O3 vec.cc -o vec-iter -DITER
> $ g++ -O3 vec.cc -o vec
>
> 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?

just guessing..
could that be the overhead of calling size() and operator[] each time?
try to store the size() to a local variable before the for loop..
also see the implementation of size() and operator[] in
bits/stl_vector.h

> 
> Cheers,
> 
> Paulo Matos



reply via email to

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