Le 04/07/2012 20:40, Jonathan M Davis a écrit :
On Wednesday, July 04, 2012 12:55:44 Tobias Pankrath wrote:
Many languages does this (it doesn't mean it is the right thing
to do). Do you know why this shouldn't be done ?
In C++ it was exception safety, wasn't it?
I believe that it was purely a question of speed. If popFront returns an
element, then that element gets copied, and if you didn't need to access the
element, then that's wasted cycles. You have to worry about exceptions in
either case, depending on the what popFront is doing.
- Jonathan M Davis
If you return by reference, you get an overhead of 1 MOV instruction.
This is ridiculous.
You win nothing else, because the register things are returned in is a
trash register, so you have the returned thing, or garbage in it, you
can assume nothing else.
The cost is neglectible. And any compiler is able to reduce that cost to
0 when inlining if the value is not read. If the compiler don't inline,
an extra MOV instruction is not will slow you down.