在书籍和其他代码中,有时可以看到
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