Search in sources :

Example 56 with Out

use of org.h2.dev.util.BinaryArithmeticStream.Out in project h2database by h2database.

the class TestBitStream method testGolomb.

private void testGolomb(String expected, int div, int value) {
    final StringBuilder buff = new StringBuilder();
    Out o = new Out(null) {

        @Override
        public void writeBit(int bit) {
            buff.append(bit == 0 ? '0' : '1');
        }
    };
    o.writeGolomb(div, value);
    int size = Out.getGolombSize(div, value);
    String got = buff.toString();
    assertEquals(size, got.length());
    assertEquals(expected, got);
}
Also used : Out(org.h2.dev.util.BitStream.Out)

Example 57 with Out

use of org.h2.dev.util.BinaryArithmeticStream.Out in project h2database by h2database.

the class TestBitStream method testGolombRandomized.

private void testGolombRandomized() {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    Out bitOut = new Out(out);
    Random r = new Random(1);
    int len = 1000;
    for (int i = 0; i < len; i++) {
        int div = r.nextInt(100) + 1;
        int value = r.nextInt(1000000);
        bitOut.writeGolomb(div, value);
    }
    bitOut.flush();
    bitOut.close();
    byte[] data = out.toByteArray();
    ByteArrayInputStream in = new ByteArrayInputStream(data);
    In bitIn = new In(in);
    r.setSeed(1);
    for (int i = 0; i < len; i++) {
        int div = r.nextInt(100) + 1;
        int value = r.nextInt(1000000);
        int v = bitIn.readGolomb(div);
        assertEquals("i=" + i + " div=" + div, value, v);
    }
}
Also used : Random(java.util.Random) ByteArrayInputStream(java.io.ByteArrayInputStream) In(org.h2.dev.util.BitStream.In) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Out(org.h2.dev.util.BitStream.Out)

Example 58 with Out

use of org.h2.dev.util.BinaryArithmeticStream.Out in project h2database by h2database.

the class TestBitStream method testHuffmanRandomized.

private void testHuffmanRandomized() {
    Random r = new Random(1);
    int[] freq = new int[r.nextInt(200) + 1];
    for (int i = 0; i < freq.length; i++) {
        freq[i] = r.nextInt(1000) + 1;
    }
    int seed = r.nextInt();
    r.setSeed(seed);
    BitStream.Huffman huff = new BitStream.Huffman(freq);
    ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
    BitStream.Out out = new BitStream.Out(byteOut);
    for (int i = 0; i < 10000; i++) {
        huff.write(out, r.nextInt(freq.length));
    }
    out.close();
    BitStream.In in = new BitStream.In(new ByteArrayInputStream(byteOut.toByteArray()));
    r.setSeed(seed);
    for (int i = 0; i < 10000; i++) {
        int expected = r.nextInt(freq.length);
        assertEquals(expected, huff.read(in));
    }
}
Also used : BitStream(org.h2.dev.util.BitStream) Out(org.h2.dev.util.BitStream.Out) Random(java.util.Random) In(org.h2.dev.util.BitStream.In) In(org.h2.dev.util.BitStream.In) ByteArrayInputStream(java.io.ByteArrayInputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Out(org.h2.dev.util.BitStream.Out)

Example 59 with Out

use of org.h2.dev.util.BinaryArithmeticStream.Out in project h2database by h2database.

the class TestAnsCompression method testCompressionRate.

private void testCompressionRate() throws IOException {
    byte[] data = new byte[1024 * 1024];
    Random r = new Random(1);
    for (int i = 0; i < data.length; i++) {
        data[i] = (byte) (r.nextInt(4) * r.nextInt(4));
    }
    int[] freq = new int[256];
    AnsCompression.countFrequencies(freq, data);
    int lenAns = AnsCompression.encode(freq, data).length;
    BitStream.Huffman huff = new BitStream.Huffman(freq);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    BitStream.Out o = new BitStream.Out(out);
    for (byte x : data) {
        huff.write(o, x & 255);
    }
    o.flush();
    int lenHuff = out.toByteArray().length;
    BinaryArithmeticStream.Huffman aHuff = new BinaryArithmeticStream.Huffman(freq);
    out = new ByteArrayOutputStream();
    BinaryArithmeticStream.Out o2 = new BinaryArithmeticStream.Out(out);
    for (byte x : data) {
        aHuff.write(o2, x & 255);
    }
    o2.flush();
    int lenArithmetic = out.toByteArray().length;
    assertTrue(lenAns < lenArithmetic);
    assertTrue(lenArithmetic < lenHuff);
    assertTrue(lenHuff < data.length);
}
Also used : BitStream(org.h2.dev.util.BitStream) BinaryArithmeticStream(org.h2.dev.util.BinaryArithmeticStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Random(java.util.Random)

Example 60 with Out

use of org.h2.dev.util.BinaryArithmeticStream.Out in project h2database by h2database.

the class TestBinaryArithmeticStream method testPerformance.

private void testPerformance() throws IOException {
    Random r = new Random();
    // Profiler prof = new Profiler().startCollecting();
    for (int seed = 0; seed < 10000; seed++) {
        r.setSeed(seed);
        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
        Out out = new Out(byteOut);
        int len = 100;
        for (int i = 0; i < len; i++) {
            boolean v = r.nextBoolean();
            int prob = r.nextInt(BinaryArithmeticStream.MAX_PROBABILITY);
            out.writeBit(v, prob);
        }
        out.flush();
        r.setSeed(seed);
        ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
        In in = new In(byteIn);
        for (int i = 0; i < len; i++) {
            boolean expected = r.nextBoolean();
            int prob = r.nextInt(BinaryArithmeticStream.MAX_PROBABILITY);
            assertEquals(expected, in.readBit(prob));
        }
    }
// time = System.nanoTime() - time;
// System.out.println("time: " + TimeUnit.NANOSECONDS.toMillis(time));
// System.out.println(prof.getTop(5));
}
Also used : Random(java.util.Random) ByteArrayInputStream(java.io.ByteArrayInputStream) In(org.h2.dev.util.BinaryArithmeticStream.In) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Out(org.h2.dev.util.BinaryArithmeticStream.Out)

Aggregations

ByteArrayOutputStream (java.io.ByteArrayOutputStream)27 IOException (java.io.IOException)23 OutputStream (java.io.OutputStream)19 ByteArrayInputStream (java.io.ByteArrayInputStream)17 SQLException (java.sql.SQLException)17 DbException (org.h2.message.DbException)17 Random (java.util.Random)11 ResultSet (java.sql.ResultSet)10 InputStream (java.io.InputStream)9 Statement (java.sql.Statement)9 Connection (java.sql.Connection)7 PrintStream (java.io.PrintStream)6 Properties (java.util.Properties)6 Task (org.h2.util.Task)6 BufferedOutputStream (java.io.BufferedOutputStream)5 File (java.io.File)5 FileOutputStream (java.io.FileOutputStream)5 InputStreamReader (java.io.InputStreamReader)5 PipedInputStream (java.io.PipedInputStream)5 OutputStreamWriter (java.io.OutputStreamWriter)4