26 * @summary micro-benchmark correctness mode |
26 * @summary micro-benchmark correctness mode |
27 * @run main IteratorMicroBenchmark iterations=1 size=8 warmup=0 |
27 * @run main IteratorMicroBenchmark iterations=1 size=8 warmup=0 |
28 */ |
28 */ |
29 |
29 |
30 import static java.util.stream.Collectors.summingInt; |
30 import static java.util.stream.Collectors.summingInt; |
|
31 import static java.util.stream.Collectors.toList; |
31 |
32 |
32 import java.lang.ref.WeakReference; |
33 import java.lang.ref.WeakReference; |
33 import java.util.ArrayDeque; |
34 import java.util.ArrayDeque; |
34 import java.util.Arrays; |
|
35 import java.util.ArrayList; |
35 import java.util.ArrayList; |
36 import java.util.Collection; |
36 import java.util.Collection; |
37 import java.util.Collections; |
37 import java.util.Collections; |
38 import java.util.Deque; |
38 import java.util.Deque; |
39 import java.util.Iterator; |
39 import java.util.Iterator; |
203 if (val.equals("true")) return true; |
203 if (val.equals("true")) return true; |
204 throw new IllegalArgumentException(val); |
204 throw new IllegalArgumentException(val); |
205 } |
205 } |
206 |
206 |
207 private static List<Job> filter(Pattern filter, List<Job> jobs) { |
207 private static List<Job> filter(Pattern filter, List<Job> jobs) { |
208 if (filter == null) return jobs; |
208 return (filter == null) ? jobs |
209 ArrayList<Job> newJobs = new ArrayList<>(); |
209 : jobs.stream() |
210 for (Job job : jobs) |
210 .filter(job -> filter.matcher(job.name()).find()) |
211 if (filter.matcher(job.name()).find()) |
211 .collect(toList()); |
212 newJobs.add(job); |
|
213 return newJobs; |
|
214 } |
212 } |
215 |
213 |
216 private static void deoptimize(int sum) { |
214 private static void deoptimize(int sum) { |
217 if (sum == 42) |
215 if (sum == 42) |
218 System.out.println("the answer"); |
216 System.out.println("the answer"); |
268 for (int i = 0, n = rnd.nextInt(size); i < n; i++) { |
266 for (int i = 0, n = rnd.nextInt(size); i < n; i++) { |
269 ad.addLast(ad.removeFirst()); |
267 ad.addLast(ad.removeFirst()); |
270 abq.add(abq.remove()); |
268 abq.add(abq.remove()); |
271 } |
269 } |
272 |
270 |
273 ArrayList<Job> jobs = new ArrayList<>(Arrays.asList()); |
271 ArrayList<Job> jobs = new ArrayList<>(); |
274 |
272 |
275 List.of(al, ad, abq, |
273 List.<Collection<Integer>>of( |
276 new LinkedList<>(al), |
274 al, ad, abq, |
277 new PriorityQueue<>(al), |
275 new LinkedList<>(al), |
278 new Vector<>(al), |
276 new PriorityQueue<>(al), |
279 new ConcurrentLinkedQueue<>(al), |
277 new Vector<>(al), |
280 new ConcurrentLinkedDeque<>(al), |
278 new ConcurrentLinkedQueue<>(al), |
281 new LinkedBlockingQueue<>(al), |
279 new ConcurrentLinkedDeque<>(al), |
282 new LinkedBlockingDeque<>(al), |
280 new LinkedBlockingQueue<>(al), |
283 new LinkedTransferQueue<>(al), |
281 new LinkedBlockingDeque<>(al), |
284 new PriorityBlockingQueue<>(al)) |
282 new LinkedTransferQueue<>(al), |
285 .stream() |
283 new PriorityBlockingQueue<>(al)).forEach( |
286 .forEach(x -> { |
284 x -> { |
287 jobs.addAll(collectionJobs(x)); |
285 jobs.addAll(collectionJobs(x)); |
288 if (x instanceof Deque) |
286 if (x instanceof Deque) |
289 jobs.addAll(dequeJobs((Deque<Integer>)x)); |
287 jobs.addAll(dequeJobs((Deque<Integer>)x)); |
290 }); |
288 }); |
291 |
289 |
292 if (reverse) Collections.reverse(jobs); |
290 if (reverse) Collections.reverse(jobs); |
293 if (shuffle) Collections.shuffle(jobs); |
291 if (shuffle) Collections.shuffle(jobs); |
294 |
292 |
295 time(filter(filter, jobs)); |
293 time(filter(filter, jobs)); |