- 
    Type:Improvement 
- 
    Resolution: Done
- 
    Priority:Major - P3 
- 
    None
- 
    Affects Version/s: None
- 
    Component/s: None
- 
        Storage Execution
- 
        Fully Compatible
- 
        None
- 
        None
- 
        None
- 
        None
- 
        None
- 
        None
- 
        None
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.