[SERVER-62830] [ABT] Optimize how we construct objects Created: 21/Jan/22  Updated: 01/Sep/23

Status: Backlog
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Drew Paroski Assignee: Backlog - Query Execution
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on SERVER-62843 Manually measure perf of how ABT cons... Closed
Assigned Teams:
Query Execution
Participants:

 Description   

As a first step, we need to do testing to compare the performance of ABT’s way of constructing objects (newObj()+setField()) vs. the SBE Stage Builder (SERVER-62843).

We anticipate that ABT will be notably slower, because a naive lowering of ABT’s way of constructing objects will result in a lot of intermediate objects being created at run time.

Assuming this is the case, the next step will be to design and implement some analysis/optimization in “abt_lower.cpp” and “path_lower.cpp” that will optimize object construction.

As part of this task, we should also look at how the ABT->SBE lowering process should decide whether it's better to construct an SBE object or a BSON Object in a given context. Svilen has indicated that he would like it if there was some way that the new optimizer could optionally pass along information to help the ABT->SBE lowering process decide whether it's better to construct an SBE object or BSON object (this info could possibly be passed along through a "physical property" on the relevant node in the ABT.


Generated at Thu Feb 08 05:56:10 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.