Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-62830

[ABT] Optimize how we construct objects

    • Type: Icon: Task Task
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None
    • Query Execution

      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.

            Assignee:
            backlog-query-execution [DO NOT USE] Backlog - Query Execution
            Reporter:
            andrew.paroski@mongodb.com Drew Paroski
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: