What is more efficient, i++ or ++i?
Efficiency shouldn't be your concern: it is meaning. The two are not the same, unless they are freestanding: one operates pre-use of the value, the other post.
int i; i = 1; cout << i++; //Returns 1
int i; i = 1; cout << ++i; //Returns 2
When meaning isn't important, most compilers will translate both ++i and i++ (say in a for loop) into the same machine/VM code.
i++ :
- create a temporary copy of i
- increment i
- return the temporary copy
++i :
- increment i
- return i
With optimizations on, it is quite possible that the resulting assembly is identical, however ++i is more efficient.
edit : keep in mind that in C++, i may be whatever object that support the prefix and postfix ++ operator. For complex objects, the temporary copy cost is non negligible.
I would look elsewhere for optimization potential.
It does not matter on a modern compiler.
int v = i++;
is the same as
int v = i;
i = i + 1;
A modern compiler will discover that v
is unused and the code to calculate v
is pure (no side effects). Then it will remove v
and the assignment code and will generate this
i = i + 1;