测试 1
@BenchMarkMode (mode.averagetime) @OutputTimeUnit (timeUnit.nanoseconds) @warmup (การวนซ้ำ = 5, เวลา = 3, TimeUnit = TimeUnit.seconds) @measurement (การทำซ้ำ = 20, Time = 3, TimeUnit = TimeUnit.seconds)@ รายการ <String> data = new ArrayList <> (); @Setup เป็นโมฆะสาธารณะ init () {// เตรียมสำหรับ (int i = 0; i <100; i ++) {data.add (uuid.randomuuid (). toString ()); }} @TearDown โมฆะสาธารณะ destory () {// destory} @benchmark โมฆะสาธารณะ benchstream () {data.stream (). foreach (e -> {e.getBytes (); ลอง {thread.sleep (10);} catch (interruptedexception e1) } @Benchmark โมฆะสาธารณะ BenchParallelSTream () {data.parallelsStream (). foreach (e -> {e.getBytes (); ลอง {thread.sleep (10);} catch (interruptedException e1) } โมฆะคงที่สาธารณะหลัก (สตริง [] args) พ่น runnerexception {ตัวเลือก opt = ตัวเลือกใหม่ builder () .include (".*" + streambenchtest.class.getSimplename () + ".*"). forks (1) .build (); นักวิ่งใหม่ (opt) .run (); - Parallelsstream 线程数
默认是 runtime.getruntime (). arableprocessors () - 1, 这里为 7
运行结果
# เรียกใช้เสร็จสมบูรณ์ เวลาทั้งหมด: 00: 02: 44Benchmark โหมด CNT คะแนนข้อผิดพลาด UnitsStreamBenchtest.BenchParallelSTream AVGT 20 15586805.437 ± 1509175.840 NS/OPSTREAMBENCHTEST.BENCTREAM AVGT 20 1147570372.950
测试 2
将数据ข้อมูล改为 30, 同时นอนหลับ改为 100
เบนช์มาร์กโหมดคะแนน CNT ข้อผิดพลาด unitsstreambenchtest.BenchParallelSTream AVGT 20 414230854.631 ± 725294.455 NS/OPSTREAMBENCHTEST.BENCHSTREAM AVGT 20 3107250608.500 ± 4805037.628 NS/OPT
可以发现นอน越长, parallellelsream 优势越明显。
小结
ParallelsTream 在阻塞场景下优势更明显, 其线程池个数默认为
runtime.getRuntime (). arableprocessors () - 1, 如果需修改则需设置 -djava.util.concurrent.forkjoinpool.common.parallelism = 8
以上就是本次讲述知识点的全部内容, 感谢你对武林网的支持。