我在用溪流做实验。更具体地说,我想比较标准流和并行流。但是,与标准流相比,使用并行流的响应时间非常慢。这很奇怪,因为我的预期正好相反。这是我为实验编写的测试代码。欢迎提出任何建议。
package streamsExamples;
import java.util.OptionalDouble;
import java.util.stream.*;
import java.util.*;
import static java.util.stream.IntStream.of;
public class ParallelSpeedTest {
private static OptionalDouble optionalDouble;
private final static long LIMIT = 100000000;
private static Random random = new Random();
private static ArrayList<Integer> list= new ArrayList<Integer>();
public static void main(String[] args) {
long begin, end;
for(long i = 0; i < LIMIT; i++){
list.add(random.nextInt());
}
begin = System.currentTimeMillis();
streamTest();
end = System.currentTimeMillis();
System.out.println("Stream: " +(end - begin));
begin = System.currentTimeMillis();
parallelStreamTest();
end = System.currentTimeMillis();
System.out.println("Parallel Stream: " +(end - begin));
}
public static void streamTest() {
optionalDouble = IntStream
.generate(new Random()::nextInt)
.limit(LIMIT)
.average();
}
public static void parallelStreamTest(){
optionalDouble = IntStream
.generate(new Random()::nextInt)
.parallel()
.limit(100000000)
.average();
}
}
1条答案
按热度按时间nwsw7zdq1#
只是因为我有兴趣。。。我创建了一个示例,您可以看到parallelstream更快(对于您正在做的事情)
而且,由于编译器的优化,如果您反复调用它们,序列流和并行流都会变得很快。
输出: