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

Comparing jsr166/src/test/loops/Integrate.java (file contents):
Revision 1.3 by jsr166, Thu Oct 29 23:11:03 2009 UTC vs.
Revision 1.9 by jsr166, Mon Sep 20 20:42:37 2010 UTC

# Line 4 | Line 4
4   * http://creativecommons.org/licenses/publicdomain
5   */
6  
7 //import jsr166y.*;
7   import java.util.concurrent.*;
8  
9   /**
10 < * Sample program using Gaussian Quadrature for numerical integration.
10 > * Sample program using Guassian Quadrature for numerical integration.
11   * This version uses a simplified hardwired function.  Inspired by a
12   * <A href="http://www.cs.uga.edu/~dkl/filaments/dist.html">
13   * Filaments</A> demo program.
# Line 41 | Line 40 | public final class Integrate {
40      static final int calls = 263479047;
41  
42      public static void main(String[] args) throws Exception {
43 <        int procs = Runtime.getRuntime().availableProcessors();
43 >        int procs = 0;
44  
45          try {
46              if (args.length > 0)
# Line 58 | Line 57 | public final class Integrate {
57              System.out.println("Usage: java Integrate3 threads <s[erial] | d[ynamic] | f[ork] - default d>");
58              return;
59          }
60 +        oneTest(procs);
61 +        oneTest(procs);
62 +        oneTest(procs);
63 +    }
64  
65 <        ForkJoinPool g = new ForkJoinPool(procs);
65 >    static void oneTest(int procs) {
66 >        ForkJoinPool g = procs == 0? new ForkJoinPool() :
67 >            new ForkJoinPool(procs);
68 >        System.out.println("Number of procs=" + g.getParallelism());
69          System.out.println("Integrating from " + start + " to " + end +
70                             " forkPolicy = " + forkArg);
71          long lastTime = System.nanoTime();
72 <        for (int i = 0; i < 10; ++i) {
72 >        for (int i = 0; i < 20; ++i) {
73              double a;
74              if (forkPolicy == SERIAL)
75                  a = SQuad.computeArea(g, start, end);
# Line 76 | Line 82 | public final class Integrate {
82              lastTime = now;
83              System.out.printf("Calls/sec: %12d", (long) (calls / s));
84              System.out.printf(" Time: %7.3f", s);
85 <            System.out.printf(" Area: %12.1f", a);
85 >            System.out.printf(" Threads: %5d", g.getPoolSize());
86 >            //            System.out.printf(" Area: %12.1f", a);
87              System.out.println();
88          }
89          System.out.println(g);
# Line 162 | Line 169 | public final class Integrate {
169              q.fork();
170              ar = recEval(c, r, fc, fr, ar);
171              if (!q.tryUnfork()) {
172 <                q.quietlyHelpJoin();
172 >                //                q.quietlyHelpJoin();
173 >                q.quietlyJoin();
174                  return ar + q.area;
175              }
176              return ar + recEval(l, c, fl, fc, al);
# Line 210 | Line 218 | public final class Integrate {
218                  (q = new DQuad(l, c, al)).fork();
219              ar = recEval(c, r, fc, fr, ar);
220              if (q != null && !q.tryUnfork()) {
221 <                q.quietlyHelpJoin();
221 >                //                q.quietlyHelpJoin();
222 >                q.quietlyJoin();
223                  return ar + q.area;
224              }
225              return ar + recEval(l, c, fl, fc, al);
# Line 219 | Line 228 | public final class Integrate {
228      }
229  
230   }
231 +
232 +

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines