0 Replies Latest reply on May 11, 2007 8:50 AM by mrbahr

    Deserialization Performance in FDS

    mrbahr Level 1
      We have an application that relies on FDS for both remote method invocation and data synchronization. In certain remote calls, when we send down an object graph for storing on the server, the majority of the time on the server is spent in FDS doing deserialization. Here is an example of what I mean:

      (fds starts processing get billing codes)
      (deserialize params)
      [Flex]15:20:28.604 [DEBUG] [Endpoint.RTMP] Deserializing AMF/RTMP request
      [Flex]15:20:31.649 [DEBUG] [Message.RPC] Before invoke service: remoting-service
      (deserialize done -- 3.045)
      (method invoked)
      2007-05-10 15:20:31,649 DEBUG [com.presidio.coding.BillingCodingServiceImpl] - 1178835631649) Start Log Timer: Getting billing codes (getByEncounterId)
      2007-05-10 15:20:31,799 DEBUG [com.presidio.coding.BillingCodingServiceImpl] - 1178835631799)End Log Timer (150: Finished getting billing codes
      (method complete - took .150)
      [Flex]15:20:31.799 [DEBUG] [Service.Remoting] Result: 'com.presidio.billing.BillingCodes
      [Flex]15:20:31.809 [DEBUG] [Message.RPC] After invoke service: remoting-service
      [Flex]15:20:31.809 [DEBUG] [Endpoint.RTMP] Serializing AMF/RTMP response
      (fds done with get billing codes -- total time 3.205 --- method took .150(5%) -- deserialize took 3.045(95%) -- serialize took 0%)

      As you can see from our timings, deserialization took 95% of the total time to process. It appears to be taking 3.045 seconds to deserialize an object graph sent from a Flex client through a FDS remoteObject call. The bean graph is not that big.

      Any thoughts on how to track down what is taking so long and/or to optimize the speed with which deserialization operates?

      Thanks,
      Tom