java8 parallelStream性能测试

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了java8 parallelStream性能测试脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

本文主要研究下parallelStream的性能。

测试1

@BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) @Warmup(iterations = 5, time = 3, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 20, time = 3, timeUnit = TimeUnit.SECONDS) @Fork(1) @State(Scope.Benchmark) public class StreamBenchTest {     List<String> data = new ArrayList<>();      @Setup     public void init() {         // prepare         for(int i=0;i<100;i++){             data.add(UUID.randomUUID().toString());         }     }      @TearDown     public void destory() {         // destory     }      @Benchmark     public void benchStream(){         data.stream().forEach(e -> {             e.getBytes();             try {                 Thread.sleep(10);             } catch (InterruptedException e1) {                 e1.printStackTrace();             }         });     }      @Benchmark     public void benchParallelStream(){         data.parallelStream().forEach(e -> {             e.getBytes();             try {                 Thread.sleep(10);             } catch (InterruptedException e1) {                 e1.printStackTrace();             }         });     }      public static void main(String[] args) throws RunnerException {         Options opt = new OptionsBuilder()                 .include(".*" +StreamBenchTest.class.getSimpleName()+ ".*")                 .forks(1)                 .build();         new Runner(opt).run();     }  }

parallelStream线程数

默认是Runtime.getRuntime().availableProcessors() - 1,这里为7

运行结果

# Run complete. total time: 00:02:44  Benchmark                            Mode  Cnt           Score         Error  Units StreamBenchTest.benchParallelStream  avgt   20   155868805.437 ± 1509175.840  ns/op StreamBenchTest.benchStream          avgt   20  1147570372.950 ± 6138494.414  ns/op

测试2

将数据data改为30,同时sleep改为100
Benchmark                            Mode  Cnt           Score         Error  Units StreamBenchTest.benchParallelStream  avgt   20   414230854.631 ±  725294.455  ns/op StreamBenchTest.benchStream          avgt   20  3107250608.500 ± 4805037.628  ns/op
可以发现Sleep越长,parallelStream优势越明显。

小结

parallelStream在阻塞场景下优势更明显,其线程池个数默认为
Runtime.getRuntime().availableProcessors() - 1,如果需修改则需设置-Djava.util.concurrent.ForkJoinPool.COMmon.parallelism=8

doc

脚本宝典总结

以上是脚本宝典为你收集整理的java8 parallelStream性能测试全部内容,希望文章能够帮你解决java8 parallelStream性能测试所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。