我在一些Objective-C代码中有一个整数“myInt”。 myInt用作布尔值...因此我只对零值或非零值感兴趣。我想快速在零和非零值之间切换。最快的方法是什么?
这是我到目前为止所尝试的:(所有这些工作)
尝试1 :
// myInt is initialized to 0
if(myInt == 0){
myInt = 1;
}else{
myInt = 0;
}
尝试2 :
myInt = !myInt;
尝试3 :
myInt ^= 0xffffffff;
我意识到我可以用一个分析器来测量性能...但是我决定问SO,因为我希望其他人(我自己)可以从这个问题所激发的讨论中学到一些东西。
答案 0 :(得分:5)
尝试2是最紧凑,最干净,更易于维护。 为什么第二次猜测编译器的优化?
答案 1 :(得分:3)
通常,要在0和某个常量整数a之间切换,请使用
myInt = a - myInt
答案 2 :(得分:2)
这取决于。您是在为ARM,x86_64,i386,PPC还是6502编译?
区别在于学术性,但是如果你真的想知道哪个更快,你将不得不查看编译器生成的反汇编代码。