什么是在Objective-C中在零和非零整数值之间切换的最快方法?

时间:2010-01-21 04:25:44

标签: objective-c performance

我在一些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,因为我希望其他人(我自己)可以从这个问题所激发的讨论中学到一些东西。

3 个答案:

答案 0 :(得分:5)

尝试2是最紧凑,最干净,更易于维护。 为什么第二次猜测编译器的优化?

答案 1 :(得分:3)

通常,要在0和某个常量整数a之间切换,请使用

myInt = a - myInt

答案 2 :(得分:2)

这取决于。您是在为ARM,x86_64,i386,PPC还是6502编译?

区别在于学术性,但是如果你真的想知道哪个更快,你将不得不查看编译器生成的反汇编代码。