测试 1
@BenchMarkMode (mode.AverageTime) @OutputTimeUnit (timeunit.nanoseconds) @warmUp (iterations = 5, time = 3, timeunit = timeunit.seconds) @measurement (itérations = 20, time = 3, timeunit = timeunit.seconds) @Fork (1) @State (Scope.BenchMark) StreamBerchTecht (1) @State (SCOPE.BenchMark) StreamBerchTest (1) @State (Scope.BenchMark) List <string> data = new ArrayList <> (); @SetUp public void init () {// se préparer pour (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) lève RunNeRexception {Options opt = new OptionsBuilder () .Include (". *" + StreamBenchTest.class.getSimplename () + ". *") .frks (1) .build (); nouveau coureur (opt) .run (); }} Parallelstream 线程数
默认是 runtime.getRuntime (). DisponibleProcessors () - 1 , 这里为 7
运行结果
# Run complete. Temps total: 00: 02: 44Benchmark Mode CNT Score d'erreur UnitsStreamBenchTest.BenchParallelStream AVGT 20 155868805.437 ± 1509175.840 NS / OpstreambenchTest.Benchstream Avgt 20 1147570372.950 ± 6138494.414 NS / OP / OP / OPO
测试 2
将数据 données 改为 30 , 同时 sommeil 改为 100
Mode de référence CNT Score d'erreur UnitsStreamBenchTest.BenchParallelStream AVGT 20 414230854.631 ± 725294.455 NS / OPSTERMBENCHTEST
可以发现 Sleep 越长 , Parallelstream 优势越明显。
小结
Parallelstream 在阻塞场景下优势更明显 , 其线程池个数默认为
Runtime.getRuntime (). DisponibleProcessors () - 1 , 如果需修改则需设置 -djava.util.concurrent.forkjoinpool.common.Parallelism = 8
以上就是本次讲述知识点的全部内容 , 感谢你对武林网的支持。