Это реализация Math.min
:
public static int min(int a, int b) {
return (a <= b) ? a : b;
}
Условный оператор решает так же машинный код, что и оператор if-; присвоение локальной переменной практически бесплатное и в любом случае происходит на уровне машинного кода, потому что все промежуточные результаты должны быть сохранены где-то.
Если ваш цикл обнаружен как горячая точка во время выполнения вашей программы, компилятор JIT будет вставлять полный код Math.min
в ваш цикл. В этот момент практически не будет разницы между двумя вариантами, которые вы рассматриваете.
Тем не менее, конечным судьей является измерение вашего кода работает. Если – и только если – вы видите фактическую проблему с производительностью, вы должны сначала использовать профилировщик, чтобы узнать, где именно потрачено время; никогда не доверяйте своим догадкам. Затем, если окажется, что этот конкретный цикл является узким местом, вы можете рассмотреть возможность тестирования с обоими параметрами, чтобы увидеть, имеет ли значение какое-либо значение.
Если мы говорим о лучших практиках; [не используйте многострочные безделушки ifs] (http://cafe.elharo.com/blogroll/braceless-if-considered-harmful/) –