解決しました
jimbeさんのおっしゃる通りに、自分で計測してみました。
Java
1import java.util.*;
2import java.util.stream.*;
3
4class Foreach {
5 public static void main(String[] args) {
6 List<Double> list = Stream.generate(Math::random).limit(10000).collect(Collectors.toList());
7
8 // コレクション
9 long startTime1 = System.nanoTime();
10
11 list.forEach(System.out::println);
12
13 long endTime1 = System.nanoTime();
14
15 // Stream
16 long startTime2 = System.nanoTime();
17
18 list.stream().forEach(System.out::println);
19
20 long endTime2 = System.nanoTime();
21
22 // parallelStream
23 long startTime3 = System.nanoTime();
24
25 list.parallelStream().forEach(System.out::println);
26
27 long endTime3 = System.nanoTime();
28
29 System.out.println("コレクション・処理時間:" + (endTime1 - startTime1) + " ナノ秒");
30 System.out.println("Stream・処理時間:" + (endTime2 - startTime2) + " ナノ秒");
31 System.out.println("parallelStream・処理時間:" + (endTime3 - startTime3) + " ナノ秒");
32 }
33}
このようなコードで計測してみたところ、結果は、
コレクション・処理時間:1893574557 ナノ秒
Stream・処理時間:1375210846 ナノ秒
parallelStream・処理時間:1233031096 ナノ秒
でした。
私のPCは、低スペックなので、わかりませんが、Stream を使用したほうが速いとわかりました。
また、並列処理にするとちょっと速くなりました。
何回か計測したのですが、すべて Stream に軍配が上がりました。
御回答ありがとうございました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/24 08:16
2019/03/24 08:43