Тройная операция лучше, чем «if / else» в iPhone

У меня есть этот блок в моей программе:

if (x > 0) {
    a = 1;
    b = 4;
} else {
    a = 2;
    b = 3;
}

Это можно записать с помощью тернарной операции следующим образом:

a = (x > 0) ? 1 : 2;
b = (x > 0) ? 4 : 3;

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

Мой вопрос: на уровне ARM, какой из них быстрее? Я считаю, что первый создает инструкцию ветвления. Но как насчет тернарной операции? На айфоне тоже ветка стала? Или у ARM iPhone есть злой код операции для выполнения этой работы?

Кстати, я также видел такую ​​злобную технику:

a = (x > 0) * 1 + (x <= 0) * 2;

Это действительно быстрее?

5
задан Eduardo Costa 27 May 2011 в 17:57
поделиться