ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/jtreg/util/Collection/RemoveMicroBenchmark.java
(Generate patch)

Comparing jsr166/src/test/jtreg/util/Collection/RemoveMicroBenchmark.java (file contents):
Revision 1.3 by jsr166, Thu Nov 24 06:42:46 2016 UTC vs.
Revision 1.4 by jsr166, Thu Nov 24 19:14:50 2016 UTC

# Line 76 | Line 76 | public class RemoveMicroBenchmark {
76      int iterations;
77      int size;
78      double warmupSeconds;
79 +    long warmupNanos;
80      Pattern filter;
81  
82      // --------------- GC finalization infrastructure ---------------
# Line 106 | Line 107 | public class RemoveMicroBenchmark {
107       * Returns array of average times per job per run.
108       */
109      long[] time0(List<Job> jobs) throws Throwable {
109        final long warmupNanos = (long) (warmupSeconds * 1000L * 1000L * 1000L);
110          final int size = jobs.size();
111          long[] nanoss = new long[size];
112          for (int i = 0; i < size; i++) {
113              if (warmupNanos > 0) forceFullGc();
114 <            long t0 = System.nanoTime();
115 <            long t;
116 <            int j = 0;
117 <            do { jobs.get(i).work(); j++; }
118 <            while ((t = System.nanoTime() - t0) < warmupNanos);
119 <            nanoss[i] = t/j;
114 >            Job job = jobs.get(i);
115 >            long totalTime;
116 >            int runs = 0;
117 >            long startTime = System.nanoTime();
118 >            do { job.work(); runs++; }
119 >            while ((totalTime = System.nanoTime() - startTime) < warmupNanos);
120 >            nanoss[i] = totalTime/runs;
121          }
122          return nanoss;
123      }
124  
125      void time(List<Job> jobs) throws Throwable {
126 <        if (warmupSeconds > 0) time0(jobs); // Warm up run
126 >        if (warmupNanos > 0) time0(jobs); // Warm up run
127          final int size = jobs.size();
128          final long[] nanoss = time0(jobs); // Real timing run
129          final long[] milliss = new long[size];
# Line 230 | Line 231 | public class RemoveMicroBenchmark {
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 +
237   //         System.out.printf(
238   //             "iterations=%d size=%d, warmup=%1g, filter=\"%s\"%n",
239   //             iterations, size, warmupSeconds, filter);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines