То, что быстрее, очень зависит от того, на какой компилятор и на какой процессор вы ориентируетесь. На большинстве процессоров и на всех компиляторах x = (x> = 0)? х: -x; это самый быстрый способ получить абсолютное значение, но на самом деле, часто стандартные функции уже предлагают это решение (например, fabs ()). Он компилируется в сравнение с последующей инструкцией условного присваивания (CMOV), а не в условный переход. Однако на некоторых платформах этой инструкции нет. Хотя компилятор Intel (но не Microsoft или GCC) автоматически преобразует if () в условное присвоение и даже попытается оптимизировать циклы (если это возможно).
Код ветвления в целом медленнее, чем условное присвоение, если ЦП использует статистическое прогнозирование. if () может быть медленнее в среднем, если операция повторяется несколько раз, а результат условия постоянно меняется. Процессоры, такие как Intel, начнут вычислять обе ветви и сбросят недопустимую, в случае больших тел if () или большого количества циклов, которые могут быть критическими.
sqr () и sqrt () на современных процессорах Intel представляют собой одну встроенную инструкцию и не являются медленными, но они неточны, и загрузка регистров также потребует времени.
Схожий вопрос: Почему медленная инструкция ветвления ЦП?
Скорее всего, профессор хотел, чтобы студент проводил исследования по этому вопросу, это полупровокационный вопрос \ задача, которая принесет пользу только в том случае, если студент научится думать самостоятельно и искать дополнительные источники.