Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-8212

Reduce connections to server to get type id

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.14.0
    • native client
    • None

    Description

      While investigating a performance problem of the C++ native client, it has been observed that change in the PdxType class "<" operator introduced by GEODE-7694 impacts performance of PdxHelper::serializePdx().

      Im attaching a patch with some code and a test case I have used to benchmark that method. With the current implementation in develop branch, creating just 10 instances is enough to see the difference. The calls to serializePdx take these times:

      Elapsed Time (serializePdx): 32.1322 milliseconds​
      Elapsed Time (serializePdx): 3.06044 milliseconds​
      Elapsed Time (serializePdx): 1.58791 milliseconds​
      Elapsed Time (serializePdx): 1.62466 milliseconds​
      Elapsed Time (serializePdx): 1.53676 milliseconds​
      Elapsed Time (serializePdx): 1.59278 milliseconds​
      Elapsed Time (serializePdx): 1.82878 milliseconds​
      Elapsed Time (serializePdx): 1.36811 milliseconds​
      Elapsed Time (serializePdx): 1.6956 milliseconds​
      Elapsed Time (serializePdx): 1.46873 milliseconds​
      Elapsed Time (serializePdx): 1.53206 milliseconds​
      

      While these are the times using the old "<" operator:

      Elapsed Time (serializePdx): 56.1524 milliseconds
      Elapsed Time (serializePdx): 0.012327 milliseconds
      Elapsed Time (serializePdx): 0.006325 milliseconds
      Elapsed Time (serializePdx): 0.005419 milliseconds
      Elapsed Time (serializePdx): 0.005266 milliseconds
      Elapsed Time (serializePdx): 0.005662 milliseconds
      Elapsed Time (serializePdx): 0.005407 milliseconds
      Elapsed Time (serializePdx): 0.005286 milliseconds
      Elapsed Time (serializePdx): 0.005467 milliseconds
      Elapsed Time (serializePdx): 0.005276 milliseconds
      Elapsed Time (serializePdx): 0.005298 milliseconds
      

      And after creating 50.000 instances, these are the times for the last 10 calls with the current "<" operator and with the old one respectively::

      Elapsed Time (serializePdx): 8.11767 milliseconds​
      Elapsed Time (serializePdx): 8.15727 milliseconds​
      Elapsed Time (serializePdx): 8.09303 milliseconds​
      Elapsed Time (serializePdx): 7.89909 milliseconds​
      Elapsed Time (serializePdx): 8.37956 milliseconds​
      Elapsed Time (serializePdx): 8.21303 milliseconds​
      Elapsed Time (serializePdx): 8.14189 milliseconds​
      Elapsed Time (serializePdx): 8.21266 milliseconds​
      Elapsed Time (serializePdx): 8.21683 milliseconds​
      Elapsed Time (serializePdx): 7.78765 milliseconds
      
      Elapsed Time (serializePdx): 0.003014 milliseconds​
      Elapsed Time (serializePdx): 0.003 milliseconds​
      Elapsed Time (serializePdx): 0.003084 milliseconds​
      Elapsed Time (serializePdx): 0.003112 milliseconds​
      Elapsed Time (serializePdx): 0.00305 milliseconds​
      Elapsed Time (serializePdx): 0.003018 milliseconds​
      Elapsed Time (serializePdx): 0.003029 milliseconds​
      Elapsed Time (serializePdx): 0.003061 milliseconds​
      Elapsed Time (serializePdx): 0.003043 milliseconds​
      Elapsed Time (serializePdx): 0.003086 milliseconds​
      

      Attachments

        1. performance_after_GEODE-7694.patch
          3 kB
          Alberto Bustamante Reyes

        Issue Links

          Activity

            People

              alberto.bustamante.reyes Alberto Bustamante Reyes
              alberto.bustamante.reyes Alberto Bustamante Reyes
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: