测试 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 { Liste <String> data = new ArrayList <> (); @Setup public void init () {// vorbereiten Sie (int i = 0; i <100; i ++) {data.add (uUid.randomuuid (). ToString ()); }} | } @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) löst RunNexception aus {options opt = new optionsBuilder () .include (".*" + streamBenchtest.class.getSimpleName () + ".*") .Forks (1) .build (); neuer Läufer (opt) .run (); }} Parallelstream 线程数
默认是 runTime.getRuntime (). Aught Processors () - 1 , 这里为 7
运行结果
# Laufe komplett. Gesamtzeit: 00: 02: 44Benchmark -Modus CNT -Score -FehlereinheitenstreamBenchtest.BenchParallelStream AVGT 20 155868805.437 ± 1509175.840 ns/opstreamBencht.Benchstream AVGT 20 1147570372.950 ± 613894.414 NS/OPS/OPS/OPS/OPS/OPS/OPS/OPS/OPS/OPS/OPS/OPS/OPTRAME/613894.
测试 2
将数据 Daten 改为 30 , 同时 Schlaf 改为 100
Benchmark -Modus CNT -Score -FehlereinheitenstreamBenchtest.BenchParallelStream AVGT 20 414230854.631 ± 725294.455 NS/OpstreamBengtest.
可以发现 Schlaf 越长 , Parallelstream 优势越明显。
小结
Parallelstream 在阻塞场景下优势更明显 , 其线程池个数默认为
RunTime.getRuntime (). AFFORMPROCESSORS () - 1 , 如果需修改则需设置 -djava.util.concurrent.forkjoinpool.Common.Parallelism = 8
以上就是本次讲述知识点的全部内容 , 感谢你对武林网的支持。 感谢你对武林网的支持。