java Stream vs parallelStream
1789 ワード
22時~24時まで
JavaのStreamとparallelStream、前者は単管、後者は多管で、運行時間の上で1つの小さい対比をして、直接コードに行きます:
コードは1つの分詞訓練語彙を読み取って、大きさ7.37 MB、それからその中の4つの字の単語/成語を探し出して、StreamとParallelStreamの運行時間(ノートwin 10)を比較して、結果は以下の通りです:
多管は単管よりずっと強く、スレッドは使いません.
JavaのStreamとparallelStream、前者は単管、後者は多管で、運行時間の上で1つの小さい対比をして、直接コードに行きます:
/**
*
* @author zhangy6
* Stream、parallelStream
* @date 2017-07-25
*/
public class StreamTest {
public static void main(String[] args) {
String path = "pku_training.utf8";
try {
List list = IOUtil.readFile2List(path, "utf-8");
long start = System.currentTimeMillis();
list.stream().
filter(e -> StringUtils.isNotBlank(e)).
map(e -> getIdiom(e)).
collect(Collectors.toList());
System.out.println("stream : " + (System.currentTimeMillis() - start) + "ms");
start = System.currentTimeMillis();
list.parallelStream().
filter(e -> StringUtils.isNotBlank(e)).
map(e -> getIdiom(e)).
collect(Collectors.toList());
System.out.println("parallelStream : " + (System.currentTimeMillis() - start) + "ms");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private static List getIdiom(String string) {
String[] array = string.split("\\s+");
List list = Arrays.asList(array);
return list.stream().filter(e -> e.length() == 4).collect(Collectors.toList());
}
}
コードは1つの分詞訓練語彙を読み取って、大きさ7.37 MB、それからその中の4つの字の単語/成語を探し出して、StreamとParallelStreamの運行時間(ノートwin 10)を比較して、結果は以下の通りです:
stream : 317ms
parallelStream : 90ms
多管は単管よりずっと強く、スレッドは使いません.