c++optimizationpremature-optimization

In C++, which is better i>-1 or i>=0


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.

  1. i > -1
  2. 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.


Solution

  • In assembly language, both are on the same structure:

    1. i > -1

      cmp   [register with i value],-1
      jg    [somewhere]
      
    2. 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.