2010-01-21 31 views
1

我在一些Objective-C代碼中有一個整數「myInt」。 myInt被用作布爾值...因此我只對零值或非零值感興趣。我想快速在零和非零值之間切換。什麼是最快的方法來做到這一點?在Objective-C中在零和非零整數值之間切換的最快方法是什麼?

這是我到目前爲止已經試過:(所有這些工作)

嘗試1

// myInt is initialized to 0 
if(myInt == 0){ 
    myInt = 1; 
}else{ 
    myInt = 0; 
} 

嘗試2

myInt = !myInt; 

嘗試3

myInt ^= 0xffffffff; 

我意識到我可以用一個分析器來衡量性能......但是我決定問這個問題,因爲我希望其他人(任何一個人)可以從這個問題的動機中學到一些東西。

+2

沒關係,如果你只是爲了好奇的緣故,但如果這是在一個真正的應用程序,很可能是相當不錯,這不會成爲你遇到的任何性能問題的原因。 – 2010-01-21 04:28:35

回答

5

嘗試2是最緊湊,最乾淨,更容易維護。 爲什麼第二次猜測編譯器的優化?

3

通常,0,並且一些常數整數之間切換,使用

myInt = a - myInt 
2

這取決於。你正在編譯ARM,x86_64,i386,PPC或6502嗎?

區別是學術性的,但如果你真的想知道哪個更快,你將不得不看看你的編譯器生成的反彙編代碼。

+0

ARM如果有幫助 – MrDatabase 2010-01-21 05:04:01

相關問題