-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Minor - P4
-
None
-
Affects Version/s: None
-
Component/s: None
-
Query Execution, Query Optimization
-
None
-
None
-
None
-
None
-
None
-
None
-
None
In SPM-4106 we've separated DocumentSource code into QO and QE parts and created exec::agg::buildPipeline() function which takes a QO pipeline and creates the corresponding QE pipeline stage-by-stage. Creating QE stages from QO stages adds additional work/cost for memory allocation, parameter copying, reference incrementing for shared objects, etc.
We should create a google benchmark that measures exec::agg::buildPipeline() time (without executing the resulting QE pipelines) for large and complex pipelines (many stages + many sub-pipelines), preferably testing all possible stages. Creating such pipelines is a separate challenge and we might want to borrow / benefit from other ongoing testing projects concerning with random generation of valid aggregation pipelines.
Unfortunately, we did not manage to create this Google-Benchmark at the beginning of SPM-4106 to observe the actual performance impact of this project, however, creating this benchmark after the project will still help to estimate the extra work and create a baseline for the future modifications.