test/jdk/java/util/Collection/IteratorMicroBenchmark.java
changeset 48541 946e34c2dec9
parent 47730 c7b5b1ce8145
child 48686 e3dcdd73a549
equal deleted inserted replaced
48540:221cf8307606 48541:946e34c2dec9
    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));