java8对stream串、并行流的测试性能的用例
2017-01-02 00:20
351 查看
上一篇文章说到,对于在java8中使用stream中的并行流的几个建议的说明。下面我们就写一个测试用例测量一下(在性能优化时,遵循的三个黄金规则:测量、测量、测量)
com.kisszero.one.paralleljava.util.stream.LongStreamjava.util.stream.StreamParallelStreamsUtils { (n) { result = (i = i <= ni++) { result += i} result} (n) { Stream.(i -> i + ).limit(n).reduce(Long::).get()} (n) { Stream.(i -> i + ).limit(n).parallel().reduce(Long::).get()} (n) { LongStream.(n).reduce(Long::).getAsLong()} (n) { LongStream.(n).parallel().reduce(Long::).getAsLong()} (n) { Accumulator accumulator = Accumulator()LongStream.(n).forEach(accumulator::add)accumulator.} (n) { Accumulator accumulator = Accumulator()LongStream.(n).parallel().forEach(accumulator::add)accumulator.} Accumulator { = (value) { += value} } }
com.kisszero.one.paralleljava.util.concurrent.ForkJoinPooljava.util.function.FunctionParallelStreamsTest { ForkJoinPool = ForkJoinPool()(String[] args) { System..println(+ (ParallelStreamsUtils::) + )System..println(+ (ParallelStreamsUtils::) + )System..println(+ (ParallelStreamsUtils::) + )System..println(+ (ParallelStreamsUtils::) + )System..println(+ (ParallelStreamsUtils::) + )System..println(+ (ParallelStreamsUtils::) + )System..println(+ (ParallelStreamsUtils::) + )} <> (Function<> finput) { fastest = Long.(i = i < i++) { start = System.()result = f.apply(input)duration = (System.() - start) / System..println(+ result)(duration < fastest) fastest = duration} fastest} } 结果: Iterative Sum done in: 5 msecs Sequential Sum done in: 154 msecs Parallel forkJoinSum done in: 376 msecs Range forkJoinSum done in: 13 msecs Parallel range forkJoinSum done in: 8 msecs SideEffect sum done in: 4 msecs Result: 22454695176953 Result: 20121132009947 Result: 16076928917786 Result: 16957805754284 Result: 13642545729260 Result: 12997343158699 Result: 13761162440338 Result: 17902422526976 Result: 21642228116467 Result: 17496039228969 SideEffect prallel sum done in: 47 msecsStream中的LongStream.rangClosed方法比iterate在这种求和的情况下效率更好,因为前者直接产生原始类型的long数字,没有装箱拆箱的开销,还有就是前者生成的数字范围,很容易的拆分为独立的小块。
相关文章推荐
- 关于DB2的简单并行性能测试
- java环境下的axis与xfire性能测试数据
- 性能测试用例的要点
- 测试用例之性能测试用例
- 《Web性能测试实战》性能测试用例模板
- Java列表对象的性能分析和测试
- 使用开源的Profiler来测试你的Java应用程序的性能
- 测试用例之性能测试用例
- 阿翔编程学-Java环境下的Axis与XFire性能测试
- 如何编写性能测试用例 ZT
- 如何写性能测试用例
- 如何写软件性能测试用例
- Java列表对象的性能分析和测试
- Java程序的单元测试-分析并获取测试用例
- [java]性能测试分析工具EclipseProfiler
- Java列表对象的性能分析和测试
- 关于在Java程序当中创建对象等基本操作的性能测试
- 性能测试用例模版
- 使用开源的Profiler来测试你的Java应用程序的性能