This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
You would have to give a lot more context for anyone to make a judgement. If it were not that the STL uses the first style a lot, and has made it mandatory for compilers to find ways to optimize it, the second version would be much more conducive to optimizations like unrolling and vectorization. I suspect the second style is better for nested loops with current technology. gcc hasn't got very far with optimization of nested loops, so it's up to you to optimize the nesting in source. It's pretty difficult to optimize nested C++ loops anyway.Based on advice from some time back, I write algorithms to use iterators rather than index-based loops. Often, this requires jumping through considerable hoops.
I'm just wondering, with current gcc loop optimizations, it this advice still relevant? For example:
< iterator style loop > for (; i != end (container); ++i) do something with (*i);
< index style loop > for (int i = 0; i < size (container); ++i) do something with container[i];
Is there (in general) a difference in speed for these 2 styles? What about if the containers are multi-dimensional and loops are nested?
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |