Investigate changes in SERVER-96176: Avoid unnecessary string copies in NumberParser for double parsing

XMLWordPrintableJSON

    • Type: Investigation
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • None
    • Developer Tools

      Original Downstream Change Summary
      [
              {
                  $project: {
                      v: {
                          $toDouble: {
                              $toString: {
                                  $divide: [
                                      2.2250738585072014e-308,
                                      314159265                
                                  ]
                              }
                          }
                      }
                  }
              }
          ]

      This used to trigger an error because the divison would yeild 7.08263e-317, which is in the subnormal range.

      Description of Linked Ticket

      Previously seen in SERVER-78480, we have observed this in profiling JParse(json.cpp). Parsing doubles copies the entire string which can be arbitrarily long. Given that we already have a StringData in parseNumberFromStringHelper<double>(), we can use C++ istringstream double parsing routine in place of strtod().

            Assignee:
            Unassigned
            Reporter:
            Backlog - Core Eng Program Management Team
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: