浏览 2326 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2015-05-28
CPU Intel(R) Core(TM) i5-4200M @2.50GHz 2.49GHz OS windows 8中文版 ==============for====================== double[] nums = new double[10000000]; for (int i = 0; i < nums.length; i++) { nums[i] = (double)i; } System.out.println("A portion of the original sequence:"); for (int i = 0; i < nums.length; i++) { System.out.print(nums[i] + " "); } System.out.println("\n"); long start = System.currentTimeMillis(); int n = nums.length; for (int i = 0; i < n; i++) { nums[i] = Math.sqrt(nums[i]); } for (int i = 0; i < nums.length; i++) { System.out.format("%.4f ",nums[i]); } System.out.println(); System.out.println(System.currentTimeMillis() - start); ============================================== ==================fork/join====================== ForkJoinPool fjp = new ForkJoinPool(); double[] nums = new double[10000000]; for (int i = 0; i < nums.length; i++) { nums[i] = (double)i; } System.out.println("A portion of the original sequence:"); for (int i = 0; i < nums.length; i++) { System.out.print(nums[i] + " "); } System.out.println("\n"); long start = System.currentTimeMillis(); SqrtTransform task = new SqrtTransform(nums,0,nums.length); //start the main ForkJoinTask fjp.invoke(task); System.out.println("A portion of the transformed sequence " + "(to four decimal places):"); for (int i = 0; i < nums.length; i++) { System.out.format("%.4f ",nums[i]); } System.out.println(); System.out.println(System.currentTimeMillis() - start); ================================================ ================SqrtTransform===================== class SqrtTransform extends RecursiveAction{ final int seqThreshold = 10000; double[] data; int start,end; SqrtTransform(double[] vals,int s,int e){ data = vals; start = s; end = e; } @Override protected void compute() { if((end - start) < seqThreshold ){ for (int i = start; i < end; i++) { data[i] = Math.sqrt(data[i]); } }else{ int middle = (start + end ) / 2; invokeAll(new SqrtTransform(data,start,middle),new SqrtTransform(data,middle,end)); } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2015-05-28
补充:计算10000000个数的平方根
两种方式运行时间相差无几,不是应该fork/join运行快吗? |
|
返回顶楼 | |
发表时间:2015-05-28
初步认定是由于System.out.println()造成,去掉之后,差别在2-3倍
|
|
返回顶楼 | |