哪个效率高?
1、
a = 1;2、
if (1 != a ) a = 1;3、
if (0 == a) a = 1;

解决方案 »

  1.   


    如果a=0或a=1时
    都是语句1.a=1高效汇编后,
    a=1 -> MOV a, 1
    语句1要1个CPU周期判断语句一般是
    MOV EAX, a
    TEST EAX, EAX (或CMP EAX, 1)
    JNZ _label
    所以语句2和3至少要3个CPU周期
      

  2.   

    哦2、 
    if (1 != a ) a = 1; 
    可能被优化成 a=1
      

  3.   

    if (1 != a ) a = 1; cmp Eax,1
    JNZ xxxx
    xxxx:
    Mov Eax,1 
    if (0 == a) a = 1; cmp Eax,0
    JZ xxxx
    xxxx:
    Mov Eax,1
      

  4.   

    肯定是1了。
    就一句:
    move xxx,1别的都要判断。当然是1高效了 。
      

  5.   

    LZ是想问关于内存读写数据的速度差异么?
    现在的CPU结构里cache的应用加上流水线、乱序执行,肯定可以认为第一个最快,后面的涉及到跳转肯定更慢。LZ讨论这个问题是钻牛角尖了。