在 C++ 中与 int 进行比较是x >= 0
比更有效率x > -1
?
简短的回答:不。
更长的答案提供一些教育见解:这完全取决于您的编译器,尽管我打赌每个理智的编译器都会为这两个表达式创建相同的代码。
示例代码:
int func_ge0(int a) {
return a >= 0;
}
int func_gtm1(int a) {
return a > -1;
}
然后编译并比较生成的汇编代码:
% gcc -S -O2 -fomit-frame-pointer foo.cc
产生这个:
_Z8func_ge0i:
.LFB0:
.cfi_startproc
.cfi_personality 0x0,__gxx_personality_v0
movl 4(%esp), %eax
notl %eax
shrl $31, %eax
ret
.cfi_endproc
vs.
_Z9func_gtm1i:
.LFB1:
.cfi_startproc
.cfi_personality 0x0,__gxx_personality_v0
movl 4(%esp), %eax
notl %eax
shrl $31, %eax
ret
.cfi_endproc
(编译器:g++-4.4)
结论:不要试图超越编译器,专注于算法和数据结构、基准测试和分析真正的瓶颈,如果有疑问:检查编译器的输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)