回覆列表
  • 1 # 木子教程

    使用for迴圈,序列Stream流,並行Stream流來對5億個數字求和。看消耗的時間。

    public class Demo06 {private static long times = 50000000000L;private long start; @Before public void init() { start = System.currentTimeMillis(); } @After public void destory() { long end = System.currentTimeMillis(); System.out.println("消耗時間: " + (end - start)); } // 測試效率,parallelStream 120 @Test public void parallelStream() { System.out.println("serialStream"); LongStream.rangeClosed(0, times) .parallel() .reduce(0, Long::sum); } // 測試效率,普通Stream 342 @Test public void serialStream() { System.out.println("serialStream"); LongStream.rangeClosed(0, times) .reduce(0, Long::sum); } // 測試效率,正常for迴圈 421 @Test public void forAdd() { System.out.println("forAdd"); long result = 0L; for (long i = 1L; i < times; i++) { result += i; } }}

    我們可以看到parallelStream的效率是最高的。

    Stream並行處理的過程會分而治之,也就是將一個大任務切分成多個小任務,這表示每個任務都是一個操作。

  • 中秋節和大豐收的關聯?
  • 想和女朋友複合,發微信不回,但是會在朋友圈發關於我問她的事或者發我對她說過的話,這是什麼情況?