ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/loops/FibTask.java
(Generate patch)

Comparing jsr166/src/test/loops/FibTask.java (file contents):
Revision 1.1 by dl, Sun Sep 19 12:55:37 2010 UTC vs.
Revision 1.7 by jsr166, Thu Jan 15 18:34:19 2015 UTC

# Line 1 | Line 1
1 + /*
2 + * Written by Doug Lea with assistance from members of JCP JSR-166
3 + * Expert Group and released to the public domain, as explained at
4 + * http://creativecommons.org/publicdomain/zero/1.0/
5 + */
6 +
7   import java.util.concurrent.*;
8  
9   /**
10   * Recursive task-based version of Fibonacci. Computes:
11   * <pre>
12   * Computes fibonacci(n) = fibonacci(n-1) + fibonacci(n-2);  for n> 1
13 < *          fibonacci(0) = 0;
14 < *          fibonacci(1) = 1.      
13 > *          fibonacci(0) = 0;
14 > *          fibonacci(1) = 1.
15   * </pre>
16 < **/
11 <
16 > */
17   public final class FibTask extends RecursiveTask<Integer> {
18  
19      // Performance-tuning constant:
20      static int sequentialThreshold;
21  
22      static long lastStealCount;
23 <  
23 >
24      public static void main(String[] args) throws Exception {
25          int procs = 0;
26          int num = 45;
# Line 25 | Line 30 | public final class FibTask extends Recur
30                  procs = Integer.parseInt(args[0]);
31              if (args.length > 1)
32                  num = Integer.parseInt(args[1]);
33 <            if (args.length > 2)
33 >            if (args.length > 2)
34                  sequentialThreshold = Integer.parseInt(args[2]);
35          }
36          catch (Exception e) {
# Line 34 | Line 39 | public final class FibTask extends Recur
39          }
40  
41          for (int reps = 0; reps < 2; ++reps) {
42 <            ForkJoinPool g = procs == 0? new ForkJoinPool() :
42 >            ForkJoinPool g = (procs == 0) ? new ForkJoinPool() :
43                  new ForkJoinPool(procs);
44              lastStealCount = g.getStealCount();
45              for (int i = 0; i < 20; ++i) {
# Line 46 | Line 51 | public final class FibTask extends Recur
51          }
52      }
53  
49
54      /** for time conversion */
55      static final long NPS = (1000L * 1000 * 1000);
56  
# Line 58 | Line 62 | public final class FibTask extends Recur
62          double secs = ((double)time) / NPS;
63          System.out.print("FibTask " + num + " = " + result);
64          System.out.printf("\tTime: %7.3f", secs);
65 <      
65 >
66          long sc = g.getStealCount();
67          long ns = sc - lastStealCount;
68          lastStealCount = sc;
# Line 67 | Line 71 | public final class FibTask extends Recur
71          System.out.println();
72      }
73  
70
74      // Initialized with argument; replaced with result
75      int number;
76  
# Line 89 | Line 92 | public final class FibTask extends Recur
92              FibTask f1 = new FibTask(n - 1);
93              f1.fork();
94              FibTask f2 = new FibTask(n - 2);
95 <            return f2.compute() + f1.join();
95 >            return f2.compute() + f1.join();
96          }
97      }
98  
# Line 103 | Line 106 | public final class FibTask extends Recur
106          return r;
107      }
108   }
106

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines