Package com.sleepycat.je.util

Source Code of com.sleepycat.je.util.Adler32Test

/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002-2005
*      Sleepycat Software.  All rights reserved.
*
* $Id: Adler32Test.java,v 1.7 2004/12/22 14:11:47 linda Exp $
*/

package com.sleepycat.je.util;

import java.util.Random;
import java.util.zip.Checksum;

import junit.framework.TestCase;

public class Adler32Test extends TestCase {

    static private int N_ITERS = 1000;

    public void testRandomAdler32ByteArray() {
  Checksum javaChecksum = new java.util.zip.Adler32();
  Checksum jeChecksum = new com.sleepycat.je.utilint.Adler32();
  Random rnd = new Random();
  for (int i = 0; i < N_ITERS; i++) {
      int nBytes = rnd.nextInt(65535);
      byte[] b = new byte[nBytes];
      rnd.nextBytes(b);
      javaChecksum.reset();
      jeChecksum.reset();
      javaChecksum.update(b, 0, nBytes);
      jeChecksum.update(b, 0, nBytes);
      assertEquals(javaChecksum.getValue(), jeChecksum.getValue());
  }
    }

    public void xtestRandomAdler32ByteArrayPerformance() {
  Checksum javaChecksum = new java.util.zip.Adler32();
  Checksum jeChecksum = new com.sleepycat.je.utilint.Adler32();
  Random rnd = new Random();
  byte[][] baa = new byte[N_ITERS][];
  int[] lengths = new int[N_ITERS];
  long totalBytes = 0;
  for (int i = 0; i < N_ITERS; i++) {
      int nBytes = rnd.nextInt(65535);
      byte[] b = new byte[nBytes];
      baa[i] = b;
      lengths[i] = nBytes;
      totalBytes += nBytes;
      rnd.nextBytes(b);
  }
  long jeChecksumTime =
      measureChecksum(baa, lengths, jeChecksum, false);
  long javaChecksumTime =
      measureChecksum(baa, lengths, javaChecksum, false);
  long jeChecksumTimeByteAtATime =
      measureChecksum(baa, lengths, jeChecksum, true);
  long javaChecksumTimeByteAtATime =
      measureChecksum(baa, lengths, javaChecksum, true);
  System.out.println(N_ITERS + " Iterations, " +
         totalBytes + " bytes:\n " +
         javaChecksumTime + " millis. for java\n" +
         jeChecksumTime + " millis. for je\n" +
         javaChecksumTimeByteAtATime +
         " millis. for java byte at a time\n" +
         jeChecksumTimeByteAtATime +
         " millis. for je byte at a time");
    }

    private long measureChecksum(byte[][] baa,
         int[] lengths,
         Checksum cksum,
         boolean byteAtATime) {
  long startTime = System.currentTimeMillis();
  for (int i = 0; i < N_ITERS; i++) {
      byte[] b = baa[i];
      int len = lengths[i];
      cksum.reset();
      if (byteAtATime) {
    for (int j = 0; j < len; j++) {
        cksum.update(b[j]);
    }
      } else {
    cksum.update(b, 0, len);
      }
  }
  long endTime = System.currentTimeMillis();
  return (endTime - startTime);
    }

    public void testRandomAdler32SingleBytes() {
  Checksum javaChecksum = new java.util.zip.Adler32();
  Checksum jeChecksum = new com.sleepycat.je.utilint.Adler32();
  Random rnd = new Random();
  for (int i = 0; i < N_ITERS; i++) {
      int nBytes = rnd.nextInt(65535);
      javaChecksum.reset();
      jeChecksum.reset();
      for (int j = 0; j < nBytes; j++) {
    byte b = (byte) (rnd.nextInt(256) & 0xff);
    javaChecksum.update(b);
    jeChecksum.update(b);
      }
      assertEquals(javaChecksum.getValue(), jeChecksum.getValue());
  }
    }
}
TOP

Related Classes of com.sleepycat.je.util.Adler32Test

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.