Java:直接比较两个数字(a <b)与减去(​​a-b <0)

时间:2019-01-16 18:53:47

标签: java performance compare coding-style

在书籍和其他代码中,有时可以看到

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

0 个答案:

没有答案