Author: thiru
Date: Mon Jan 25 08:58:53 2010
New Revision: 902735

URL: http://svn.apache.org/viewvc?rev=902735&view=rev
Log:
AVRO-355. io.Perf test harness uses different random number seeds for each run

Modified:
    hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/Perf.java

Modified: hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/Perf.java
URL: 
http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/Perf.java?rev=902735&r1=902734&r2=902735&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/Perf.java 
(original)
+++ hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/Perf.java Mon 
Jan 25 08:58:53 2010
@@ -35,7 +35,6 @@
   private static final int COUNT = 200000; // needs to be a multiple of 4
   private static final int CYCLES = 150;
   
-  
   public static void main(String[] args) throws IOException {
     List<Test> tests = new ArrayList<Test>();
     for (String a : args) {
@@ -116,6 +115,16 @@
       return new BinaryDecoder(new ByteArrayInputStream(data));
     }
 
+    /**
+     * Use a fixed value seed for random number generation
+     * to allow for better cross-run comparisons.
+     */
+    private static final long SEED = 19781210;
+
+    protected static Random newRandom() {
+      return new Random(SEED);
+    }
+
     abstract void genData(Encoder e) throws IOException;
     abstract void readInternal(Decoder d) throws IOException;
   }
@@ -132,7 +141,7 @@
     @Override void genData(Encoder e) throws IOException {
       e.writeArrayStart();
       e.setItemCount((COUNT/4) * 4); //next lowest multiple of 4  
-      Random r = new Random();
+      Random r = newRandom();
       for (int i = 0; i < COUNT/4; i++) {
         e.writeInt(r.nextInt(50)); // fits in 1 byte
         e.writeInt(r.nextInt(5000)); // fits in 2 bytes
@@ -155,7 +164,7 @@
     @Override void genData(Encoder e) throws IOException {
       e.writeArrayStart();
       e.setItemCount((COUNT / 4) *4);
-      Random r = new Random();
+      Random r = newRandom();
       for (int i = 0; i < COUNT /4; i++) {
         e.writeLong(r.nextLong() % 0x7FL); // half fit in 1, half in 2 
         e.writeLong(r.nextLong() % 0x1FFFFFL); // half fit in <=3, half in 4
@@ -178,7 +187,7 @@
     @Override void genData(Encoder e) throws IOException {
        e.writeArrayStart();
       e.setItemCount(COUNT);
-      Random r = new Random();
+      Random r = newRandom();
       for (int i = 0; i < COUNT; i++) {
         e.writeFloat(r.nextFloat());
       }
@@ -197,7 +206,7 @@
     @Override void genData(Encoder e) throws IOException {
        e.writeArrayStart();
       e.setItemCount(COUNT);
-      Random r = new Random();
+      Random r = newRandom();
       for (int i = 0; i < COUNT; i++) {
         e.writeDouble(r.nextFloat());
       }
@@ -230,7 +239,7 @@
     protected void genData(Encoder e) throws IOException {
       e.writeArrayStart();
       e.setItemCount(COUNT);
-      Random r = new Random();
+      Random r = newRandom();
       for (int i = 0; i < COUNT; i++) {
         e.writeDouble(r.nextDouble());
         e.writeDouble(r.nextDouble());


Reply via email to