Случай 1 будет более эффективным. Величина разницы будет крошечной; мы говорим о разнице между одной инструкцией и парой инструкций - поэтому на любой машине, которая может выполнять несколько миллионов инструкций в секунду, это несущественно.
Первый случай (как правило) будет реализован одной инструкцией условного перехода.
Во втором случае накладные расходы на вызов функции всегда присутствуют в дополнение к условному переходу.
Может случиться так, что компилятор все равно оптимизирует второй случай, сделав их эквивалентными. Вы можете проверить, посмотрев выходные данные компилятора или рассчитав их самостоятельно.