在C ++中,这是更好的i>

这个问题在这里已经有了答案:

  • 是<快于<=? 13个答案
  • x> -1 vs x> = 0,是否有性能差异10个答案

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

  • i > -1

    cmp   [register with i value],-1
    jg    [somewhere]
    
  • i >= 0

    cmp   [register with i value],0
    jge   [somewhere]
    
  • 根据使用的跳转标志,指令jg做出两个标志比较(ZF = 0和SF = OF),但jge只做一个(SF = OF)。

    所以我很想说,两者都使用几乎相同的寄存器和CPU周期,可能i >= 0速度会更快一些。


    那么,根据逻辑>操作可能比“=便宜”,但我想你正在编译与优化选项启用,所以编译器可能会做他想优化你的代码,所以我会说这并不重要,即使其中一个速度更快,编译器可能会将其更改为最佳选项


    当编写for循环时,将它从for (i = 0; i < 1000; i++)转换for (i = 1000; i > 0; i--)会是有益的,因为在某些体系结构中,编译器可以跳过比较当我达到0时,作为标志的指令将被设置。在现代架构中,我不确定它是否重要。

    链接地址: http://www.djcxy.com/p/31551.html

    上一篇: In C++, which is better i>

    下一篇: Why is C++ much faster than python with boost?