Java 8的流:为什么并行流速度较慢?

4 浏览
0 Comments

Java 8的流:为什么并行流速度较慢?

我正在使用Java 8的流功能,并且无法理解我得到的性能结果。我有一颗双核CPU(Intel i73520M),Windows 8 x64和64位Java 8更新5。我正在对字符串流/并行流进行简单的映射,并发现并行版本略慢。

Function, Long> timeOperation = (Stream stream) -> {
  long time1 = System.nanoTime();
  final List list = 
     stream
       .map(String::toLowerCase)
       .collect(Collectors.toList());
  long time2 = System.nanoTime();
  return time2 - time1;
};
Consumer> printTime = stream ->
  System.out.println(timeOperation.apply(stream) / 1000000f);
String[] array = new String[1000000];
Arrays.fill(array, "AbabagalamagA");
printTime.accept(Arrays.stream(array));            // 打印大约为600
printTime.accept(Arrays.stream(array).parallel()); // 打印大约为900

考虑到我有两个CPU核心,按理说并行版本应该更快,对吗?

有人能给我一个提示为什么并行版本更慢吗?

0