У меня есть этот блок в моей программе:
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;
Это действительно быстрее?