Какой самый быстрый способ переключения между нулевым и ненулевым целочисленным значением в Objective-C? - PullRequest
1 голос
/ 21 января 2010

У меня есть целое число "myInt" в некотором коде Objective-C. myInt используется как логическое значение ... поэтому меня интересуют только нулевые или ненулевые значения. Я хотел бы быстро переключаться между нулевым и ненулевым значением. Какой самый быстрый способ сделать это?

Вот что я пробовал до сих пор: (Все эти работы)

Попробуйте 1 :

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

Попробуйте 2 :

myInt = !myInt;

Попробуйте 3 :

myInt ^= 0xffffffff;

Я понимаю, что мог бы просто измерить производительность с помощью профилировщика ... однако я решил спросить об этом, потому что я надеюсь, что другие (любой я) могут извлечь что-то из обсуждения, мотивированного этим вопросом.

Ответы [ 3 ]

5 голосов
/ 21 января 2010

Try 2 - самый компактный, чистый и простой в обслуживании. Зачем угадывать оптимизацию компилятора?

3 голосов
/ 21 января 2010

В общем случае для переключения между 0 и некоторым постоянным целым числом a используйте

myInt = a - myInt
2 голосов
/ 21 января 2010

Это зависит. Вы компилируете для ARM, x86_64, i386, PPC или 6502?

Разница носит академический характер, но если вы действительно хотите знать, что быстрее, вам придется взглянуть на дизассемблированный код, сгенерированный вашим компилятором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...