VInt非常节省空间。理论上可以节省高达75%的空间。
在Lucene中,许多结构都是整数列表。例如,给定术语的文档列表,文档中术语的位置(和偏移量)等。这些列表构成了Lucene数据的主要部分。
想象一下需要数十GB的空间来存储数百万个文档的Lucene索引。将空间缩小超过一半可以减少磁盘空间需求。虽然节省磁盘空间可能不是一个大胜利,因为磁盘空间很便宜,但真正的收益来自于降低磁盘IO。读取VInt数据的磁盘IO比读取整数要低,这自动转化为更好的性能。
VInt是Lucene的可变宽度整数编码方案。它使用每个字节的低7位编码一个或多个整数,仅将高位设置为零。除了最后一个字节,所有字节的高位都设置为零,这就是长度的编码方式。