在C++中,哪个更好i> -1或i> = 0

Yog*_*esh 6 c++ optimization premature-optimization

这可能是一个愚蠢的问题,但这种优化有时会提高应用程序的性能.在这里我要专门讨论C++,因为C++编译代码的方式与c#或Java有很大不同.

问题是哪一个表现更好,如果变量i是int.

  1. i > -1
  2. i >= 0

我正在寻找所需的内存块或寄存器性能以及两种条件所需的CPU周期.

提前致谢.

Ara*_*hor 14

在汇编语言中,两者都在相同的结构上:

  1. i > -1

    cmp   [register with i value],-1
    jg    [somewhere]
    
    Run Code Online (Sandbox Code Playgroud)
  2. i >= 0

    cmp   [register with i value],0
    jge   [somewhere]
    
    Run Code Online (Sandbox Code Playgroud)

根据使用的跳转标志,该指令jg产生两个标志比较(ZF = 0和SF = OF)但jge只做一个(SF = OF).

所以我很想说两者都使用几乎相同的寄存器和CPU周期,可能只需要更快的比较i >= 0.