Yog*_*esh 6 c++ optimization premature-optimization
这可能是一个愚蠢的问题,但这种优化有时会提高应用程序的性能.在这里我要专门讨论C++,因为C++编译代码的方式与c#或Java有很大不同.
问题是哪一个表现更好,如果变量i是int.
i > -1
i >= 0
我正在寻找所需的内存块或寄存器性能以及两种条件所需的CPU周期.
提前致谢.
Ara*_*hor 14
在汇编语言中,两者都在相同的结构上:
i > -1
cmp [register with i value],-1
jg [somewhere]
Run Code Online (Sandbox Code Playgroud)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
.