JDK1.7 forkjoin 示例代码分析
2014-04-14 14:42
453 查看
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
源代码可以从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
相关文章推荐
- 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- HADOOP的学习笔记 (第五期) hadoop示例代码分析 .
- 仿百度贴吧回帖功能分析及代码示例
- Python数据分析之如何利用pandas查询数据示例代码
- MySQL union 语法代码示例分析
- 使用C#发送带附件的电子邮件的方法的代码示例分析
- Android Audio代码分析1 - AudioTrack使用示例
- Java MD5加密原理分析及代码示例
- Android 获取Root权限之后的静默安装实现 代码示例分析
- ASP.NET缓存方法分析和实践示例代码第1/2页
- OGRE示例Demo_BSP代码分析
- OGRE示例Demo_BSP代码分析(1)
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 【SMS】android 短信接收流程分析——-拦截短信示例代码
- 深入XPath的详解以及Java示例代码分析
- 换零钱算法分析及代码示例
- 剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- 分析PHP生成html文件的具体代码示例
- OGRE示例Demo_BSP代码分析
- Fork/Join(1):概念与入门示例