我有一对数字序列。每对包含2个号码long
和int
。对按{1}值的降序排序。它可以表示为int
。 (此地图按值按降序排序)
有超过10亿的Map<Long, Integer>
,每个Map
最多可包含40.000对。但通常不超过10.000这个数据结构是B-Tree索引的一部分。该索引需要占用太多磁盘空间
我正在寻找一种压缩对序列的方法来减少磁盘空间量。 Map
和int
需要4 + 8 = 12个字节。但是大多数long
值都较小,可以放在2-3个字节中。大多数int
值可以适合4-5个字节。
我在考虑其中一个选项
朴素的态度。每对使用1个字节作为头,以4位解码存储int所需的字节数,接下来的4位用于存储long的字节数。例如,如果我有2个小数字&lt; 255,我可以将整个对放在3个字节,标题,1个字节用于int和1个字节用于long。
也许通常的gzip压缩可能比天真的方法更好。