3 |
|
* as explained at http://creativecommons.org/publicdomain/zero/1.0/. |
4 |
|
*/ |
5 |
|
|
6 |
– |
import java.util.*; |
6 |
|
import java.io.*; |
7 |
+ |
import java.util.*; |
8 |
|
|
9 |
|
/** |
10 |
|
* Interface-based Deque tester. This test currently makes three |
22 |
|
static int nextHead = -1; |
23 |
|
static int size() { return nextTail - nextHead - 1; } |
24 |
|
|
25 |
– |
|
26 |
– |
static int random(int bound) { |
27 |
– |
int x = seed; |
28 |
– |
int t = (x % 127773) * 16807 - (x / 127773) * 2836; |
29 |
– |
seed = (t > 0) ? t : t + 0x7fffffff; |
30 |
– |
return (t & 0x7fffffff) % bound; |
31 |
– |
} |
32 |
– |
|
25 |
|
static int random() { |
26 |
< |
int x = seed; |
27 |
< |
int t = (x % 127773) * 16807 - (x / 127773) * 2836; |
28 |
< |
seed = (t > 0) ? t : t + 0x7fffffff; |
29 |
< |
return (t & 0x7fffffff); |
26 |
> |
int r = seed; |
27 |
> |
r ^= r << 13; // xorshift |
28 |
> |
r ^= r >>> 17; |
29 |
> |
return seed = r ^ (r << 5); |
30 |
|
} |
31 |
|
|
32 |
< |
public static void main(String args[]) throws Exception { |
32 |
> |
static int random(int bound) { |
33 |
> |
return (random() & 0x7fffffff) % bound; |
34 |
> |
} |
35 |
> |
|
36 |
> |
public static void main(String[] args) throws Exception { |
37 |
|
Class<?> cls = Class.forName(args[0]); |
38 |
< |
int n = 1000000; |
39 |
< |
|
44 |
< |
for (int j = 0; j < 3; ++j) { |
38 |
> |
long startTime = System.nanoTime(); |
39 |
> |
for (int j = 0; j < 200; ++j) { |
40 |
|
@SuppressWarnings("unchecked") |
41 |
|
Deque<Integer> deque = (Deque<Integer>) cls.newInstance(); |
42 |
|
nextTail = 0; |
43 |
|
nextHead = -1; |
44 |
< |
long start = System.nanoTime(); |
50 |
< |
mainTest(deque, n); |
51 |
< |
long end = System.nanoTime(); |
52 |
< |
long elapsedTimeMillis = (end - start) / (1000L * 1000L); |
53 |
< |
System.out.printf("Time: %d ms%n", elapsedTimeMillis); |
44 |
> |
mainTest(deque, (random() & ((1 << 20) - 1))); |
45 |
|
if (deque.isEmpty()) System.out.print(" "); |
46 |
+ |
if ((j % 10) == 9) System.out.print("."); |
47 |
|
} |
48 |
< |
|
48 |
> |
long now = System.nanoTime(); |
49 |
> |
long elapsedTimeMillis = (now - startTime) / (1000L * 1000L); |
50 |
> |
System.out.printf("\ntotal time %d ms\n", elapsedTimeMillis); |
51 |
> |
|
52 |
|
} |
53 |
|
|
54 |
|
static void mainTest(Deque<Integer> deque, int n) throws Exception { |
75 |
|
// Test fancy removal stuff once in a blue moon |
76 |
|
if ((i & 8191) == 0) |
77 |
|
testRemove(deque); |
83 |
– |
|
78 |
|
} |
79 |
|
|
80 |
|
// Stupid tests for clear, toString |
148 |
|
deque.getLast() + " expecting " + (nextTail - 1)); |
149 |
|
} |
150 |
|
|
157 |
– |
|
151 |
|
static void randomOp(Deque<Integer> deque) throws Exception { |
152 |
|
|
153 |
|
// Perform a random operation |
224 |
|
} |
225 |
|
} |
226 |
|
|
234 |
– |
|
227 |
|
private static void testEqual(Deque<Integer> d1, Deque<Integer> d2) |
228 |
|
throws Exception |
229 |
|
{ |