Friday, 25 November 2016

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.


Answer



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.


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...