-
Type: Improvement
-
Resolution: Done
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Storage Execution
-
Fully Compatible
By decompressing one control block at a time in BSONColumn we can reduce the amount of state required in the BSONColumn::Iterator and perform the Simple8b unpacking in a tight(er) loop. This should improve the cache locality and be a performance improvement for the regular case.
Decompressing objects will be a little more complex as we will need to keep track of decompressed BSONElement per sub-stream and cannot build the returned BSONObj inplace.
But this tradeoff is most likely acceptable as we should optimize for the most common cases. This can also be a stepping stone towards partial Object decompression where queries are only interested in a subset of the streams.