Optimiziation questions (c++)

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

 



(1)
I am curious about a certain aspect of how the g++ optimizer works at
-O3.  If I have a for-loop, there are times when it is beneficial to
have a function call in the while-condition.  For instance:

vector<int> v;
...
for ( int i=1; i < v.size(); ++i)

Now, I if v is not changing inside of that for-loop, then this would
appear at first glance to be more efficient:

int max = v.size();
for ( int i=1; i < max; ++i)

By using 'max' instead of v.size(), I am eliminating a function call
from every iteration of the for loop.  If the loop is iterated a large
number of times, this could have an advantage.  However, is it all the
same when you are optimizing?  Does g++ remove the need for the second
method?


Before I end this email, I am sure that at least someone is thinking,
"Wait, you're using a vector, and using an old style for loop to
traverse it instead of iterators!"  Well, yes, that's true.  But I'm
doing that for two reasons -- 1) I'm interested in the question as it
stands, so I asked it the way I did, and 2) My next question will
already cover that, as it involves a comparison between traversing an
array as I do above and using iterators.


(2)
Is there a big difference in speed between using a standard for-loop
for vector traversal and using iterators?  I already verified that I
can get a significant speed improvement (with very large N) by
accessing the vector directory with v[i] instead of using the at()
method.  But what about iterators?  If I write it with iterators
instead, will that be optimized out at -O3 to reduce to essentially
the same thing?

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux