This might be a silly question to ask, but this kind of optimization is sometimes boost performance of your application. Here I am asking specifically for C++, because the way C++ compile code is a lot different that c# or Java.
The question is which one performs better, if variable i is int.
i > -1
i >= 0
I am looking for performance in terms of memory block or registers required and CPU cycles required for both conditions.
Thanks in advance.
In assembly language, both are on the same structure:
i > -1
cmp [register with i value],-1
jg [somewhere]
i >= 0
cmp [register with i value],0
jge [somewhere]
According to used jump flags, the instruction jg
make two flags comparaisons (ZF = 0 and SF = OF) but jge
does only one (SF = OF).
So I'm tempted to say that both use almost same registers and CPU cycles, with maybe a very little quicker comparaison for i >= 0
.
Well, according to logic > operation may be "cheaper" than >=, but I guess you are compiling with Optimization option enabled, so probably the compiler do whatever he wants to optimize your code, so I would say that doesn't matter, even if one is really faster, probably the compiler change it to the best option
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