小编Nic*_*ick的帖子

为什么 LongStream reduce 和 sum 性能存在差异?

我使用LongStream'srangeClosed来测试数字总和的性能。当我通过JMH测试性能时,结果如下。

@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Fork(value = 1, jvmArgs = {"-Xms4G", "-Xmx4G"})
@State(Scope.Benchmark)
@Warmup(iterations = 10, time = 10)
@Measurement(iterations = 10, time = 10)
public class ParallelStreamBenchmark {
  private static final long N = 10000000L;

  @Benchmark
  public long sequentialSum() {
    return Stream.iterate(1L, i -> i + 1).limit(N).reduce(0L, Long::sum);
  }

  @Benchmark
  public long parallelSum() {
    return Stream.iterate(1L, i -> i + 1).limit(N).parallel().reduce(0L, Long::sum);
  }

  @Benchmark
  public long rangedReduceSum() {
    return LongStream.rangeClosed(1, N).reduce(0, Long::sum);
  }

  @Benchmark
  public long rangedSum() …
Run Code Online (Sandbox Code Playgroud)

java benchmarking java-8 java-stream

7
推荐指数
1
解决办法
124
查看次数

标签 统计

benchmarking ×1

java ×1

java-8 ×1

java-stream ×1