@@ -31,60 +31,62 @@ public class BitPackingTest {
31
31
32
32
@ Test
33
33
public void packUnpackBits () {
34
- for ( int bits = 1 ; bits <= 63 ; bits ++) {
35
- final long mask = ( 1 << bits ) - 1 ;
36
- long [] input = new long [ 8 ];
37
- final long golden64 = Util . INVERSE_GOLDEN_U64 ;
38
- long value = 0xaa55aa55aa55aa55L ; // arbitrary starting value
39
- for (int i = 0 ; i < 8 ; ++i ) {
40
- input [i ] = value & mask ;
41
- value += golden64 ;
42
- }
43
- byte [] bytes = new byte [8 * Long .BYTES ];
44
- int bitOffset = 0 ;
45
- int bufOffset = 0 ;
46
- for (int i = 0 ; i < 8 ; ++i ) {
47
- BitPacking .packBits (input [i ], bits , bytes , bufOffset , bitOffset );
48
- bufOffset += (bitOffset + bits ) >>> 3 ;
49
- bitOffset = (bitOffset + bits ) & 7 ;
50
- }
34
+ long value = 0xaa55aa55aa55aa55L ; // arbitrary starting value
35
+ for ( int n = 0 ; n < 10000 ; n ++) {
36
+ for ( int bits = 1 ; bits <= 63 ; bits ++) {
37
+ final long mask = ( 1 << bits ) - 1 ;
38
+ long [] input = new long [ 8 ];
39
+ for (int i = 0 ; i < 8 ; ++i ) {
40
+ input [i ] = value & mask ;
41
+ value += Util . INVERSE_GOLDEN_U64 ;
42
+ }
43
+ byte [] bytes = new byte [8 * Long .BYTES ];
44
+ int bitOffset = 0 ;
45
+ int bufOffset = 0 ;
46
+ for (int i = 0 ; i < 8 ; ++i ) {
47
+ BitPacking .packBits (input [i ], bits , bytes , bufOffset , bitOffset );
48
+ bufOffset += (bitOffset + bits ) >>> 3 ;
49
+ bitOffset = (bitOffset + bits ) & 7 ;
50
+ }
51
51
52
- long [] output = new long [8 ];
53
- bitOffset = 0 ;
54
- bufOffset = 0 ;
55
- for (int i = 0 ; i < 8 ; ++i ) {
56
- BitPacking .unpackBits (output , i , bits , bytes , bufOffset , bitOffset );
57
- bufOffset += (bitOffset + bits ) >>> 3 ;
58
- bitOffset = (bitOffset + bits ) & 7 ;
59
- }
60
- for (int i = 0 ; i < 8 ; ++i ) {
61
- assertEquals (output [i ], input [i ]);
52
+ long [] output = new long [8 ];
53
+ bitOffset = 0 ;
54
+ bufOffset = 0 ;
55
+ for (int i = 0 ; i < 8 ; ++i ) {
56
+ BitPacking .unpackBits (output , i , bits , bytes , bufOffset , bitOffset );
57
+ bufOffset += (bitOffset + bits ) >>> 3 ;
58
+ bitOffset = (bitOffset + bits ) & 7 ;
59
+ }
60
+ for (int i = 0 ; i < 8 ; ++i ) {
61
+ assertEquals (output [i ], input [i ]);
62
+ }
62
63
}
63
64
}
64
65
}
65
66
66
67
@ Test
67
68
public void packUnpackBlocks () {
68
- for ( int bits = 1 ; bits <= 63 ; bits ++) {
69
- if ( enablePrinting ) { System . out . println ( "bits " + bits ); }
70
- final long mask = ( 1L << bits ) - 1 ;
71
- long [] input = new long [ 8 ];
72
- final long golden64 = Util . INVERSE_GOLDEN_U64 ;
73
- long value = 0xaa55aa55aa55aa55L ; // arbitrary starting value
74
- for (int i = 0 ; i < 8 ; ++i ) {
75
- input [i ] = value & mask ;
76
- value += golden64 ;
77
- }
78
- byte [] bytes = new byte [8 * Long .BYTES ];
79
- BitPacking .packBitsBlock8 (input , 0 , bytes , 0 , bits );
80
- if (enablePrinting ) { hexDump (bytes ); }
69
+ long value = 0xaa55aa55aa55aa55L ; // arbitrary starting value
70
+ for ( int n = 0 ; n < 10000 ; n ++) {
71
+ for ( int bits = 1 ; bits <= 63 ; bits ++) {
72
+ if ( enablePrinting ) { System . out . println ( "bits " + bits ); }
73
+ final long mask = ( 1L << bits ) - 1 ;
74
+ long [] input = new long [ 8 ];
75
+ for (int i = 0 ; i < 8 ; ++i ) {
76
+ input [i ] = value & mask ;
77
+ value += Util . INVERSE_GOLDEN_U64 ;
78
+ }
79
+ byte [] bytes = new byte [8 * Long .BYTES ];
80
+ BitPacking .packBitsBlock8 (input , 0 , bytes , 0 , bits );
81
+ if (enablePrinting ) { hexDump (bytes ); }
81
82
82
- long [] output = new long [8 ];
83
- BitPacking .unpackBitsBlock8 (output , 0 , bytes , 0 , bits );
83
+ long [] output = new long [8 ];
84
+ BitPacking .unpackBitsBlock8 (output , 0 , bytes , 0 , bits );
84
85
85
- for (int i = 0 ; i < 8 ; ++i ) {
86
- if (enablePrinting ) { System .out .println ("checking value " + i ); }
87
- assertEquals (output [i ], input [i ]);
86
+ for (int i = 0 ; i < 8 ; ++i ) {
87
+ if (enablePrinting ) { System .out .println ("checking value " + i ); }
88
+ assertEquals (output [i ], input [i ]);
89
+ }
88
90
}
89
91
}
90
92
}
0 commit comments