JDK1.7 forkjoin 示例代码分析

JDK1.7中加入了并行计算API。在这个个人电脑都已经是多核的情况下,可说是应景。

源代码可以从java官方网站上下载,在sample/forkjoin/mergsort 下。

MergeDemo.java 

 //运行次数,运行多次的话耗时是取的平均值

    private static final int ITERATIONS = 1;

//受制与CPU,本机i7双核当值为3时cpu使用率基本已到峰值240%,继续加大这个值无意义

        private final Range parallelism;

        //第一个rang是定义的计算量;第二个定义的并行数

 private final static Configuration defaultConfig = new Configuration(new Range(100000, 100000, 10),

                new Range(1, 1, 4));


MergeSort.java

//判断是否要并行的阀值,太小的话可能会变慢

        private static final int THRESHOLD = 500;

最后附上以上配置的运行结果,受制于测试环境,并行度大于2的时候,继续加大并行度性能提升不明显。

Default configuration. Running with parameters: 100000 100000 10 1 1 4

Time in milliseconds. Y-axis: number of elements. X-axis parallelism used.

             1    2    3    4 

  100000:   12    9    8    8 

  200000:   26   17   15   13 

  300000:   44   25   21   19 

  400000:   51   32   30   26 

  500000:   62   42   36   32 

  600000:   80   49   43   40 

  700000:   94   66   67   57 

  800000:  115   67   61   50 

  900000:  122   82   66   64 

 1000000:  140   84   73   68 

   Total:  746  473  420  377 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值