Which one will execute faster, if (flag==0) or if (0==flag)?

后端 未结 16 790
灰色年华
灰色年华 2020-11-30 17:12

Interview question: Which one will execute faster, if (flag==0) or if (0==flag)? Why?

16条回答
  •  南方客
    南方客 (楼主)
    2020-11-30 17:59

    Same code for amd64 with GCC 4.1.2:

            .loc 1 4 0  # int f = argc;
            movl    -20(%rbp), %eax
            movl    %eax, -4(%rbp)
            .loc 1 6 0 # if( f == 0 ) {
            cmpl    $0, -4(%rbp)
            jne     .L2
            .loc 1 7 0 # return 0;
            movl    $0, -36(%rbp)
            jmp     .L4
            .loc 1 8 0 # }
     .L2:
            .loc 1 10 0 # if( 0 == f ) {
            cmpl    $0, -4(%rbp)
            jne     .L5
            .loc 1 11 0 # return 1;
            movl    $1, -36(%rbp)
            jmp     .L4
            .loc 1 12 0 # }
     .L5:
            .loc 1 14 0 # return 2;
            movl    $2, -36(%rbp)
     .L4:
            movl    -36(%rbp), %eax
            .loc 1 15 0 # }
            leave
            ret
    

提交回复
热议问题