В книгах и других кодах я иногда вижу
if (a-b < 0) ...
вместо простого и лучше читаемого
if (a < b) ...
В чем причина?
Есть ли прирост производительности? Или это просто личный стиль кодирования? ...
PS Сделал быстрый наивный тест с jmh и не нашел прироста производительности:
@Fork(value = 1)
@Warmup(time = 1)
@Measurement(time = 1)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@State(Scope.Benchmark)
public class Main {
private long a,b;
@Setup(value = Level.Invocation)
public void setup(){
a = Math.round(Math.random()*100);
b = Math.round(Math.random()*100);
}
@Benchmark
public void directCompare(Blackhole bh) {
bh.consume(a < b);
}
@Benchmark
public void substractCompare(Blackhole bh) {
bh.consume(a - b < 0);
}
Benchmark Mode Cnt Score Error Units
Main.directCompare avgt 5 27.718 ± 2.778 ns/op
Main.substractCompare avgt 5 27.055 ± 0.707 ns/op