测试 1
@BenchMarkMode (Mode.Averagetime) @OutputTimeUnit (TimeUnit.nanoseconds) @WarmUp (iterasi = 5, waktu = 3, timeunit = timeunit.seconds) @measurement (Iterations = 20, Time = 3, TimeUnit = timeunit.seconds) @fork {1) {1). Daftar <string> data = new ArrayList <> (); @Setup public void init () {// bersiap untuk (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 (); coba {thread.sleep (10);} catch (interruptEcception e1) {e1.printstack (10);} catch (interruptException e1) {e1.printstack (10);} Catch (InterruptException E1) {e1.printStack (10);} Catch (); } @Benchmark public void BenchParallelStream () {Data.parallelstream (). Foreach (e -> {e.getbytes (); coba {thread.sleep (10);} catch (interruptedException e1) {e1.printstacktrace ();}}); } public static void main (string [] args) melempar runnerException {options opt = new optionBuilder (). termasuk (".*" + streamBenchTest.class.getSimplename () + ".*") .forgks (1) .build (); runner baru (opt) .run (); }} Parallelstream 线程数
默认是 runtime.getRuntime (). Tersedia Processors () - 1 , 这里为 7
运行结果
# Jalankan Lengkap. Total Waktu: 00: 02: 44Benchmark Mode CNT Skor Kesalahan UnitSstreamBenchTest.Benchparallelstream AVGT 20 155868805.437 ± 1509175.840 NS/OPSTREAMBENCHTEST.BENCHSTREAM AVGT 20 1147570372.950 ± 614.44.44.44.44.44.44.44.44.44.44.44.44.44.94.95.94.44.44.44.44.44.94.94.44.
测试 2
将数据 Data 改为 30 , 同时 tidur 改为 100
Benchmark Mode Cnt Score Error UnitsStreamBenchTest.benchParallelStream avgt 20 414230854.631 ± 725294.455 ns/opStreamBenchTest.benchStream avgt 20 3107250608.500 ± 4805037.628 ns/op
可以发现 tidur 越长 , paralelstream 优势越明显。
小结
Parallelstream 在阻塞场景下优势更明显 , 其线程池个数默认为
Runtime.getRuntime (). Tersedia Processors () - 1 , 如果需修改则需设置 -djava.util.concurrent.forkjoinpool.common.parallelism = 8
以上就是本次讲述知识点的全部内容 , 感谢你对武林网的支持。