24 |
|
|
25 |
|
public static void main(String[] args) throws Exception { |
26 |
|
Class klass = Class.forName(args[0]); |
27 |
< |
int n = (args.length <= 1)? DEFAULT_SIZE : Integer.parseInt(args[1]); |
28 |
< |
int t = (args.length <= 2)? DEFAULT_TRIALS : Integer.parseInt(args[2]); |
27 |
> |
int n = (args.length <= 1) ? DEFAULT_SIZE : Integer.parseInt(args[1]); |
28 |
> |
int t = (args.length <= 2) ? DEFAULT_TRIALS : Integer.parseInt(args[2]); |
29 |
|
|
30 |
|
System.out.print("Class: " + klass.getName()); |
31 |
< |
System.out.print(" ~iters: " + (long)n * (long)n); |
31 |
> |
System.out.print(" ~iters: " + (long) n * (long) n); |
32 |
|
System.out.print(" trials: " + t); |
33 |
|
System.out.println(); |
34 |
|
|
35 |
|
Collection<Integer>[] colls = |
36 |
|
(Collection<Integer>[])new Collection[NC]; |
37 |
|
|
38 |
< |
for (int k = 0; k < colls.length; ++k) |
39 |
< |
colls[k] = (Collection<Integer>)klass.newInstance(); |
38 |
> |
for (int k = 0; k < colls.length; ++k) { |
39 |
> |
Object x = klass.newInstance(); |
40 |
> |
if (x instanceof Collection) |
41 |
> |
colls[k] = (Collection<Integer>) x; |
42 |
> |
else if (x instanceof Map) |
43 |
> |
colls[k] = (Collection<Integer>) |
44 |
> |
Collections.newSetFromMap((Map) x); |
45 |
> |
else |
46 |
> |
throw new Error("bad class"); |
47 |
> |
} |
48 |
|
|
49 |
|
for (int i = 0; i < t; ++i) |
50 |
|
new IteratorLoops(colls).oneRun(n); |
65 |
|
preload(n); |
66 |
|
long startTime = System.nanoTime(); |
67 |
|
long count = traversals(n); |
68 |
< |
double elapsed = (double)(System.nanoTime() - startTime); |
68 |
> |
double elapsed = (double) (System.nanoTime() - startTime); |
69 |
|
double npi = elapsed / count; |
70 |
|
double secs = elapsed / 1000000000; |
71 |
|
System.out.printf("%7.1f ns/iter %8.3fs run time\n", npi, secs); |
74 |
|
long traversals(int n) { |
75 |
|
long count = 0; |
76 |
|
long check = 0; |
77 |
< |
for (int i = 0; i < n; i++) { |
77 |
> |
for (int i = 0; i < n; i++) { |
78 |
|
check += elementCount; |
79 |
|
count += counts(); |
80 |
|
maybeAdd(); |
120 |
|
k >>>= 1; |
121 |
|
} |
122 |
|
// let GC settle down |
123 |
< |
try { Thread.sleep(500); } catch(Exception ex) { return; } |
123 |
> |
try { Thread.sleep(500); } |
124 |
> |
catch (Exception ex) { return; } |
125 |
|
} |
126 |
|
|
127 |
|
|