c++ - Which is faster for checking whether a condition is true? -
(1)
if (!cond) or
(2)
if (cond == false) seems see lot of people using (1). isn't less optimal? in c++, if (...) statement evaluates true long whatever in parentheses non-zero value. so, in (1), has happen is
- do logical not on
cond - check whether result non-zero (whether bits on)
whereas, in (2), has happen is
- check whether
cond0 (whether bits off)
now, time taken check whether bits off greater or equal time check whether bits on. therefore, question whether time perform logical not makes difference, on average.
which should use optimize code?
tested clang -o3:
int main () { int i; cin >> i; if (i == 0) return -1; } produces
leaq 4(%rsp), %rsi movl $_zst3cin, %edi callq _znsirseri cmpl $1, 4(%rsp) sbbl %eax, %eax popq %rdx ret while
int main () { int i; cin >> i; if (!i) return -1; } produces
leaq 4(%rsp), %rsi movl $_zst3cin, %edi callq _znsirseri cmpl $1, 4(%rsp) sbbl %eax, %eax popq %rdx ret so no difference @ all.
Comments
Post a Comment