ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/loops/ExecutorCompletionServiceLoops.java
Revision: 1.1
Committed: Mon May 2 19:19:38 2005 UTC (19 years ago) by dl
Branch: MAIN
Log Message:
Put misc performance tests into CVS

File Contents

# User Rev Content
1 dl 1.1 /*
2     * @test %I% %E%
3     * @bug 166
4     * @compile -source 1.5 ExecutorCompletionServiceLoops.java
5     * @run main/timeout=3600 ExecutorCompletionServiceLoops
6     * @summary Exercise ExecutorCompletionServiceLoops
7     */
8     /*
9     * Written by Doug Lea with assistance from members of JCP JSR-166
10     * Expert Group and released to the public domain. Use, modify, and
11     * redistribute this code in any way without acknowledgement.
12     */
13    
14     import java.util.concurrent.*;
15    
16     public class ExecutorCompletionServiceLoops {
17     static final int POOLSIZE = 100;
18     static final ExecutorService pool =
19     Executors.newFixedThreadPool(POOLSIZE);
20     static final ExecutorCompletionService<Integer> ecs =
21     new ExecutorCompletionService<Integer>(pool);
22     static boolean print = false;
23    
24     public static void main(String[] args) throws Exception {
25     int max = 8;
26     int base = 10000;
27    
28     if (args.length > 0)
29     max = Integer.parseInt(args[0]);
30    
31     System.out.println("Warmup...");
32     oneTest( base );
33     Thread.sleep(100);
34     print = true;
35    
36     for (int i = 1; i <= max; i += (i+1) >>> 1) {
37     System.out.print("n: " + i * base);
38     oneTest(i * base );
39     Thread.sleep(100);
40     }
41     pool.shutdown();
42     }
43    
44     static class Task implements Callable<Integer> {
45     public Integer call() {
46     int l = System.identityHashCode(this);
47     l = LoopHelpers.compute2(l);
48     int s = LoopHelpers.compute1(l);
49     l = LoopHelpers.compute2(l);
50     s += LoopHelpers.compute1(l);
51     return new Integer(s);
52     }
53     }
54    
55     static class Producer implements Runnable {
56     final ExecutorCompletionService cs;
57     final int iters;
58     Producer(ExecutorCompletionService ecs, int i) {
59     cs = ecs;
60     iters = i;
61     }
62     public void run() {
63     for (int i = 0; i < iters; ++i)
64     ecs.submit(new Task());
65     }
66     }
67    
68     static void oneTest(int iters) throws Exception {
69     long startTime = System.nanoTime();
70     new Thread(new Producer(ecs, iters)).start();
71    
72     int r = 0;
73     for (int i = 0; i < iters; ++i)
74     r += ecs.take().get().intValue();
75    
76     long elapsed = System.nanoTime() - startTime;
77     long tpi = elapsed/ iters;
78    
79     if (print)
80     System.out.println("\t: " + LoopHelpers.rightJustify(tpi) + " ns per task");
81    
82     if (r == 0) // avoid overoptimization
83     System.out.println("useless result: " + r);
84    
85    
86     }
87    
88     }