相关疑难解决方法(0)

CPU的div指令和HotSpot的JIT代码之间存在较大的性能差距

从CPU的开始,一般知道整数除法指令是昂贵的.我去看看今天有多糟糕,在拥有数十亿晶体管的CPU上.我发现硬件idiv指令对于常量除数的性能仍然比JIT编译器能够发出的代码差得多,后者不包含idiv指令.

为了在专用的微基准测试中实现这一点,我写了以下内容:

@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@OperationsPerInvocation(MeasureDiv.ARRAY_SIZE)
@Warmup(iterations = 8, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
@State(Scope.Thread)
@Fork(1)
public class MeasureDiv
{
  public static final int ARRAY_SIZE = 128;
  public static final long DIVIDEND_BASE = 239520948509234807L;
  static final int DIVISOR = 10;
  final long[] input = new long[ARRAY_SIZE];

  @Setup(Level.Iteration) public void setup() {
    for (int i = 0; i < input.length; i++) {
      input[i] = DIVISOR;
    }
  }

  @Benchmark …
Run Code Online (Sandbox Code Playgroud)

java jmh

10
推荐指数
1
解决办法
177
查看次数

标签 统计

java ×1

jmh ×1