求问串行stream与并行stream效率的问题

一个帅逼 2017-08-04 05:59:54
按理串行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);
}
...全文
425 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
soton_dolphin 2017-08-04
  • 打赏
  • 举报
回复
你可以并行试试1000000以内的加法或者乘法
soton_dolphin 2017-08-04
  • 打赏
  • 举报
回复
你加了sorted就不是并行了。。。
解开者 2017-08-04
  • 打赏
  • 举报
回复
并行流这个特性,基本原则是“能不用就不用”。因其底层实现是forkjoin,这本身就要精确掌握cpu的调度原理,令物理核心都在密集操作才能提高性能;而且有的权威框架的尝试也不成功,比如netty5。
一个帅逼 2017-08-04
  • 打赏
  • 举报
回复
引用 3 楼 benma378 的回复:
测试方法有点不妥 1 只测试了一次,数据不太有说服力 2 确保硬件是多核CPU或者多CPU
我自己是有测试过很多次的,结果几乎一样
俺是小王子 2017-08-04
  • 打赏
  • 举报
回复
测试方法有点不妥 1 只测试了一次,数据不太有说服力 2 确保硬件是多核CPU或者多CPU
一个帅逼 2017-08-04
  • 打赏
  • 举报
回复
但是测试结果几乎一样 结果就不贴了,试了多次都一样,求问是不是我测试方式不对?
一个帅逼 2017-08-04
  • 打赏
  • 举报
回复
并行测试
	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);
	}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧