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

Comparing jsr166/src/test/loops/NQueensCS.java (file contents):
Revision 1.1 by dl, Fri Oct 23 19:57:06 2009 UTC vs.
Revision 1.9 by dl, Sat Sep 12 19:53:04 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/licenses/publicdomain
4 > * http://creativecommons.org/publicdomain/zero/1.0/
5   */
6  
7   //import jsr166y.*;
# Line 19 | Line 19 | public final class NQueensCS extends Rec
19      }; // see http://www.durangobill.com/N_Queens.html
20  
21      static final int FIRST_SIZE = 8; // smaller ones too short to measure well
22 <    static final int LAST_SIZE = 15; // bigger ones too long to wait for
22 >    static final int LAST_SIZE = 16; // bigger ones too long to wait for
23  
24      /** for time conversion */
25      static final long NPS = (1000L * 1000 * 1000);
26 <    
26 >
27      public static void main(String[] args) throws Exception {
28          int procs = 0;
29          try {
# Line 35 | Line 35 | public final class NQueensCS extends Rec
35              return;
36          }
37          for (int reps = 0; reps < 2; ++reps) {
38 <            ForkJoinPool g = procs == 0? new ForkJoinPool() :
38 >            ForkJoinPool g = (procs == 0) ? ForkJoinPool.commonPool() :
39                  new ForkJoinPool(procs);
40              lastStealCount = g.getStealCount();
41              for (int i = FIRST_SIZE; i <= LAST_SIZE; i++)
42                  test(g, i);
43              System.out.println(g);
44 <            g.shutdown();    
44 >            if (g != ForkJoinPool.commonPool())
45 >                g.shutdown();
46 >            Thread.sleep(100);
47          }
48      }
49  
# Line 63 | Line 65 | public final class NQueensCS extends Rec
65          lastStealCount = sc;
66          System.out.printf(" Steals/t: %5d", ns/ps);
67          System.out.println();
68 <    }            
68 >    }
69  
70 <    // Boards are represented as arrays where each cell
70 >    // Boards are represented as arrays where each cell
71      // holds the column number of the queen in that row
72  
73      final int[] sofar;
74      NQueensCS nextSubtask; // to link subtasks
75      int solutions;
76 <    NQueensCS(int[] a) {
77 <        this.sofar = a;  
76 >    NQueensCS(int[] a) {
77 >        this.sofar = a;
78      }
79  
80      public final void compute() {
# Line 108 | Line 110 | public final class NQueensCS extends Rec
110  
111      private static int processSubtasks(NQueensCS s) {
112          // Always run first the task held instead of forked
113 <        s.compute();
113 >        s.compute();
114          int ns = s.solutions;
115          s = s.nextSubtask;
116 +        /* comment out to stress join
117          // Then the unstolen ones
118          while (s != null && s.tryUnfork()) {
119              s.compute();
120              ns += s.solutions;
121              s = s.nextSubtask;
122          }
123 +        */
124          // Then wait for the stolen ones
125          while (s != null) {
126              s.join();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines