消息关闭
    暂无新消息!
按理串行stream的效率会比并行的效率快很多,但是我测试的没区别,是我测试的方法不对吗?串行的测试如下
	public static void main(String[] args) {

int num=1000000;
List<String> list =new ArrayList<String>();
for (int i = 0; i < num; i++) {
UUID u=UUID.randomUUID();
list.add(u.toString());
}
long t0=System.nanoTime();
list.stream().sorted().count();
long t1=System.nanoTime();
long time=TimeUnit.NANOSECONDS.toMillis(t1 - t0);
System.out.println("用时:"+time);
}

6个回答

︿ 2
并行测试
	public static void main(String[] args) {

int num=1000000;
List<String> list =new ArrayList<String>();
for (int i = 0; i < num; i++) {
UUID u=UUID.randomUUID();
list.add(u.toString());
}
long t0=System.nanoTime();
list.parallelStream().sorted().count();
long t1=System.nanoTime();
long time=TimeUnit.NANOSECONDS.toMillis(t1 - t0);
System.out.println("用时:"+time);
}
︿ 1
并行流这个特性,基本原则是“能不用就不用”。因其底层实现是forkjoin,这本身就要精确掌握cpu的调度原理,令物理核心都在密集操作才能提高性能;而且有的权威框架的尝试也不成功,比如netty5。
︿ 0
但是测试结果几乎一样 结果就不贴了,试了多次都一样,求问是不是我测试方式不对?
︿ 0
测试方法有点不妥

1 只测试了一次,数据不太有说服力 
2 确保硬件是多核CPU或者多CPU