This patch implements Variable-length Byte compression of PostingLists to sacrifice some performance for lower memory consumption.
PostingList compression and decompression was extensively tested using fuzzer for multiple hours and runnning significant number of realistic FuzzyFindRequests. AddressSanitizer and UndefinedBehaviorSanitizer were used to ensure the correct behaviour.
Performance evaluation was conducted with recent LLVM symbol index (292k symbols) and the collection of user-recorded queries (7751 FuzzyFindRequest JSON dumps):
Metrics | Before | After | Change (%) |
---|---|---|---|
Memory consumption (posting lists only), MB | 54.4 | 23.5 | -60% |
Time to process queries, sec | 7.70 | 9.4 | +25% |
mark as an implementation detail so readers aren't confused.