1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002,2010 Oracle. All rights reserved.
*
* $Id: Adler32Test.java,v 1.13.2.2 2010/01/04 15:30:48 cwl 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();
Checksum chunkingChecksum =
new com.sleepycat.je.utilint.Adler32.ChunkingAdler32(128);
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();
chunkingChecksum.reset();
javaChecksum.update(b, 0, nBytes);
jeChecksum.update(b, 0, nBytes);
chunkingChecksum.update(b, 0, nBytes);
assertEquals(javaChecksum.getValue(), jeChecksum.getValue());
assertEquals(javaChecksum.getValue(), chunkingChecksum.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());
}
}
}
|