您的位置:首页 > 编程语言 > Java开发

JDK1.7 forkjoin 示例代码分析

2014-04-14 14:42 417 查看
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 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  并行计算 多核