32 |
|
import java.util.Arrays; |
33 |
|
import java.util.ArrayList; |
34 |
|
import java.util.Collection; |
35 |
+ |
import java.util.Collections; |
36 |
|
import java.util.Deque; |
37 |
|
import java.util.Enumeration; |
38 |
|
import java.util.Iterator; |
74 |
|
public abstract void work() throws Throwable; |
75 |
|
} |
76 |
|
|
77 |
< |
int iterations; |
78 |
< |
int size; |
79 |
< |
double warmupSeconds; |
80 |
< |
long warmupNanos; |
81 |
< |
Pattern filter; |
77 |
> |
final int iterations; |
78 |
> |
final int size; // number of elements in collections |
79 |
> |
final double warmupSeconds; |
80 |
> |
final long warmupNanos; |
81 |
> |
final Pattern filter; // select subset of Jobs to run |
82 |
> |
final boolean reverse; // reverse order of Jobs |
83 |
> |
final boolean shuffle; // randomize order of Jobs |
84 |
> |
|
85 |
> |
RemoveMicroBenchmark(String[] args) { |
86 |
> |
iterations = intArg(args, "iterations", 10_000); |
87 |
> |
size = intArg(args, "size", 1000); |
88 |
> |
warmupSeconds = doubleArg(args, "warmup", 7.0); |
89 |
> |
filter = patternArg(args, "filter"); |
90 |
> |
reverse = booleanArg(args, "reverse"); |
91 |
> |
shuffle = booleanArg(args, "shuffle"); |
92 |
> |
|
93 |
> |
warmupNanos = (long) (warmupSeconds * (1000L * 1000L * 1000L)); |
94 |
> |
} |
95 |
|
|
96 |
|
// --------------- GC finalization infrastructure --------------- |
97 |
|
|
196 |
|
return (val == null) ? null : Pattern.compile(val); |
197 |
|
} |
198 |
|
|
199 |
+ |
private static boolean booleanArg(String[] args, String keyword) { |
200 |
+ |
String val = keywordValue(args, keyword); |
201 |
+ |
if (val == null || val.equals("false")) return false; |
202 |
+ |
if (val.equals("true")) return true; |
203 |
+ |
throw new IllegalArgumentException(val); |
204 |
+ |
} |
205 |
+ |
|
206 |
|
private static List<Job> filter(Pattern filter, List<Job> jobs) { |
207 |
|
if (filter == null) return jobs; |
208 |
|
ArrayList<Job> newJobs = new ArrayList<>(); |
244 |
|
volatile Check check = new Check(); |
245 |
|
|
246 |
|
public static void main(String[] args) throws Throwable { |
247 |
< |
new RemoveMicroBenchmark().run(args); |
247 |
> |
new RemoveMicroBenchmark(args).run(); |
248 |
|
} |
249 |
|
|
250 |
< |
void run(String[] args) throws Throwable { |
230 |
< |
iterations = intArg(args, "iterations", 10_000); |
231 |
< |
size = intArg(args, "size", 1000); |
232 |
< |
warmupSeconds = doubleArg(args, "warmup", 5); |
233 |
< |
filter = patternArg(args, "filter"); |
234 |
< |
|
235 |
< |
warmupNanos = (long) (warmupSeconds * (1000L * 1000L * 1000L)); |
236 |
< |
|
250 |
> |
void run() throws Throwable { |
251 |
|
// System.out.printf( |
252 |
|
// "iterations=%d size=%d, warmup=%1g, filter=\"%s\"%n", |
253 |
|
// iterations, size, warmupSeconds, filter); |
296 |
|
} |
297 |
|
}); |
298 |
|
|
299 |
+ |
if (reverse) Collections.reverse(jobs); |
300 |
+ |
if (shuffle) Collections.shuffle(jobs); |
301 |
+ |
|
302 |
|
time(filter(filter, jobs)); |
303 |
|
} |
304 |
|
|