When using DocumentSequences, we already know the size of the array to be deserialized ahead of time. This is because the DocumentSequence is stored as a std::vector within OpMsg. This is different from when the array is within the BSON body, in which case there is no way to know the size of the array without actually iterating through it.
The IDL parser generator can be changed here to include a values.reserve(sequence.objs.size()) call, so that when we are using DocumentSequences we don't have to perform vector reallocations due to not reserving the correct size ahead of time.
There may be additional scope for improvement here. Please investigate that as well
In bulkWrite perf investigations, this made a 10% difference.
- is related to
-
SERVER-83148 Investigate hand parsing bulkWrite command instead of IDL
- Closed