You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2015/12/27 00:30:18 UTC

[math] Randomize further the micro-benchmarking tool.

Repository: commons-math
Updated Branches:
  refs/heads/master 763dfdfe8 -> 9ce4e1a37


Randomize further the micro-benchmarking tool.


Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/9ce4e1a3
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/9ce4e1a3
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/9ce4e1a3

Branch: refs/heads/master
Commit: 9ce4e1a371418e5eacc69227885815f9a4221c65
Parents: 763dfdf
Author: Gilles <er...@apache.org>
Authored: Sun Dec 27 00:28:28 2015 +0100
Committer: Gilles <er...@apache.org>
Committed: Sun Dec 27 00:28:28 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/commons/math4/PerfTestUtils.java | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-math/blob/9ce4e1a3/src/test/java/org/apache/commons/math4/PerfTestUtils.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/PerfTestUtils.java b/src/test/java/org/apache/commons/math4/PerfTestUtils.java
index f137a47..7af8088 100644
--- a/src/test/java/org/apache/commons/math4/PerfTestUtils.java
+++ b/src/test/java/org/apache/commons/math4/PerfTestUtils.java
@@ -16,9 +16,11 @@
  */
 package org.apache.commons.math4;
 
-import java.util.Random;
 import java.util.concurrent.Callable;
 
+import org.apache.commons.math4.util.MathArrays;
+import org.apache.commons.math4.random.RandomGenerator;
+import org.apache.commons.math4.random.Well19937c;
 import org.apache.commons.math4.exception.MathIllegalStateException;
 import org.apache.commons.math4.exception.util.LocalizedFormats;
 import org.apache.commons.math4.stat.descriptive.StatisticalSummary;
@@ -35,7 +37,7 @@ public class PerfTestUtils {
     /** Default number of code repeats for computing the average run time. */
     private static final int DEFAULT_REPEAT_STAT = 10000;
     /** RNG. */
-    private static Random rng = new Random();
+    private static RandomGenerator rng = new Well19937c();
 
     /**
      * Timing.
@@ -104,9 +106,16 @@ public class PerfTestUtils {
         final int numMethods = methods.length;
         final double[][][] timesAndResults = new double[numMethods][repeatStat][2];
 
+        // Indices into the array containing the methods to benchmark.
+        // The purpose is that at each repeat, the "methods" are called in a different order.
+        final int[] methodSequence = MathArrays.natural(numMethods);
+
         try {
             for (int k = 0; k < repeatStat; k++) {
-                for (int j = 0; j < numMethods; j++) {
+                MathArrays.shuffle(methodSequence, rng);
+                for (int n = 0; n < numMethods; n++) {
+                    final int j = methodSequence[n]; // Index of the timed method.
+
                     if (runGC) {
                         // Try to perform GC outside the timed block.
                         System.gc();