Quick question, assuming beforehand
mov eax, 0
which is more efficient?
inc eax
inc eax
or
add eax, 2
Also, in case the two inc
s are faster, do compilers (say, the GCC) commonly (i.e. w/o aggressive optimization flags) optimize var += 2
to it?
PS: Don't bother to answer with a variation of "don't prematurely optimize", this is merely academic interest.
ADD is not always faster than INC , but it is almost always at least as fast (there are a few corner cases on certain older micro-architectures, but they are exceedingly rare), and sometimes significantly faster.
After all, both ADD and INC updates flag registers. The only difference is that INC doesn't update CF .
If you ever wanna know raw performance stats of x86 instructions, see Dr Agner Fogs listings (volume 4 to be exact). As for the part about compilers, thats dependent on the compiler's code generator, and not something you should rely on too much.
on a side note: I find it funny/ironic that in a question about performance, you used MOV EAX,0
to zero a register instead of XOR EAX,EAX
:P (and if MOV EAX,0
was done beforehand, the fastest variant would be to remove the inc's and add's and just MOV EAX,2
).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With