@Benchmark public Object optimizedLength1(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 1, data.bits, data.input); return data.buffer; }
@Test public void testBasic() throws Throwable { LongBitPacker packer = new LongBitPacker(); for (int length = 0; length < LENGTHS; length++) { assertUnpacking(packer, length); } }
switch (bitSize) { case 1: unpack1(buffer, offset, len, input); break; case 2: unpack2(buffer, offset, len, input); break; case 4: unpack4(buffer, offset, len, input); break; case 8: unpack8(buffer, offset, len, input); break; case 16: unpack16(buffer, offset, len, input); break; case 24: unpack24(buffer, offset, len, input); break; case 32: unpack32(buffer, offset, len, input); break; case 40: unpack40(buffer, offset, len, input); break; case 48: unpack48(buffer, offset, len, input); break; case 56:
switch (bitSize) { case 1: unpack1(buffer, offset, len, input); break; case 2: unpack2(buffer, offset, len, input); break; case 4: unpack4(buffer, offset, len, input); break; case 8: unpack8(buffer, offset, len, input); break; case 16: unpack16(buffer, offset, len, input); break; case 24: unpack24(buffer, offset, len, input); break; case 32: unpack32(buffer, offset, len, input); break; case 40: unpack40(buffer, offset, len, input); break; case 48: unpack48(buffer, offset, len, input); break; case 56:
@Benchmark @OperationsPerInvocation(3) public Object optimizedLength3(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 3, data.bits, data.input); return data.buffer; }
@Test public void testBasic() throws Throwable { LongBitPacker packer = new LongBitPacker(); for (int length = 0; length < LENGTHS; length++) { assertUnpacking(packer, length); } }
@Benchmark @OperationsPerInvocation(2) public Object optimizedLength2(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 2, data.bits, data.input); return data.buffer; }
@Benchmark @OperationsPerInvocation(6) public Object optimizedLength6(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 6, data.bits, data.input); return data.buffer; }
@Benchmark @OperationsPerInvocation(256) public Object optimizedLength256(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 256, data.bits, data.input); return data.buffer; }
@Benchmark @OperationsPerInvocation(5) public Object optimizedLength5(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 5, data.bits, data.input); return data.buffer; }
@Benchmark @OperationsPerInvocation(7) public Object optimizedLength7(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 7, data.bits, data.input); return data.buffer; }
@Benchmark @OperationsPerInvocation(4) public Object optimizedLength4(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 4, data.bits, data.input); return data.buffer; }
private static void assertUnpacking(LongBitPacker packer, int length) throws IOException { for (int width = 1; width <= WIDTHS; width++) { for (int offset = 0; offset < OFFSETS; offset++) { long[] expected = new long[length + offset]; long[] actual = new long[length + offset]; RandomByteInputStream expectedInput = new RandomByteInputStream(); unpackGeneric(expected, offset, length, width, expectedInput); RandomByteInputStream actualInput = new RandomByteInputStream(); packer.unpack(actual, offset, length, width, actualInput); for (int i = offset; i < length + offset; i++) { assertEquals(actual[i], expected[i], format("index = %s, length = %s, width = %s, offset = %s", i, length, width, offset)); } assertEquals(actualInput.getReadBytes(), expectedInput.getReadBytes(), format("Wrong number of bytes read for length = %s, width = %s, offset = %s", length, width, offset)); } } }
packer.unpack(literals, numLiterals, length, fixedBits, input); while (length > 0) { if (deltaBase < 0) {
@Benchmark public Object optimizedLength1(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 1, data.bits, data.input); return data.buffer; }
@Benchmark @OperationsPerInvocation(6) public Object optimizedLength6(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 6, data.bits, data.input); return data.buffer; }
@Benchmark @OperationsPerInvocation(4) public Object optimizedLength4(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 4, data.bits, data.input); return data.buffer; }
private static void assertUnpacking(LongBitPacker packer, int length) throws IOException { for (int width = 1; width <= WIDTHS; width++) { for (int offset = 0; offset < OFFSETS; offset++) { long[] expected = new long[length + offset]; long[] actual = new long[length + offset]; RandomByteInputStream expectedInput = new RandomByteInputStream(); unpackGeneric(expected, offset, length, width, expectedInput); RandomByteInputStream actualInput = new RandomByteInputStream(); packer.unpack(actual, offset, length, width, actualInput); for (int i = offset; i < length + offset; i++) { assertEquals(actual[i], expected[i], format("index = %s, length = %s, width = %s, offset = %s", i, length, width, offset)); } assertEquals(actualInput.getReadBytes(), expectedInput.getReadBytes(), format("Wrong number of bytes read for length = %s, width = %s, offset = %s", length, width, offset)); } } }
@Benchmark @OperationsPerInvocation(3) public Object optimizedLength3(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 3, data.bits, data.input); return data.buffer; }
@Benchmark @OperationsPerInvocation(2) public Object optimizedLength2(BenchmarkData data) throws Throwable { data.input.setPosition(0); data.packer.unpack(data.buffer, 0, 2, data.bits, data.input); return data.buffer; }