|
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.
|