测试 1
@Benchmarkmode (mode.averagetime) @outputtimeUnit (timeUnit.nanoseconds) @warmup (итерации = 5, время = 3, время и timeUnit.seconds) @measurement (итерации = 20, time = 3, timeUnit = timeUnit.seconds) @Fopk (1) @State (Scope.bope). Список <string> data = new ArrayList <> (); @Setup public void init () {// Подготовка к (int i = 0; i <100; i ++) {data.add (uuid.randomuuid (). ToString ()); }} @Teardown public void destory () {// destory} @benchmark public void bender () {data.stream (). Foreach (e -> {e.getbytes (); try {thread.sleep (10);} catch (urreptexception e1) {e1.printstacktrace ();}}); } @Benchmark public void centerparallelstream () {data.parallelstream (). Foreach (e -> {e.getbytes (); try {thread.sleep (10);} catch (прерывание E1) {e1.printStackTrace ();}}); } public static void main (string [] args) бросает runnerexception {options opt = new OptionsBuilder () .include (".*" + StreambenchTest.class.getSimplEname () + ".*") .forks (1) .build (); новый бегун (opt) .run (); }} PARALLELSTREAM 线程数
默认是 runtime.getRuntime (). Доступные processors () - 1 , 这里为 7
运行结果
# Запустить в комплекте. Всего времени: 00: 02: 44444benchmark Mode CNT Ошибка оценки UnitStreamBenchTest.BenchParallelStream AVGT 20 155868805.437 ± 1509175.840 NS/OpstreamBenchTest.BenchStream AVGT 20 1147570372.950 ± 61384944444141414141414141414141414141414141414141441441441441441441414
测试 2
将数据 Данные 改为 30 , 同时 Sleep 改为 100
Benchmark Mode CNT Ошибка оценки UnitStreamBenchTest.BenchParallelStream AVGT 20 414230854.631 ± 725294.455 NS/OpstreamBenchTest.BenchStream AVGT 20 3107250608.500 ± 4805037.628 NS/OPS/OPS.
可以发现 Sleep 越长 , ParallelStream 优势越明显。
小结
PARALLELSTREAM 在阻塞场景下优势更明显 , 其线程池个数默认为
Runtime.getRuntime (). Доступные processors () - 1 , 如果需修改则需设置 -djava.util.concurrent.forkjoinpool.common.parallelism = 8
以上就是本次讲述知识点的全部内容 , 感谢你对武林网的支持。