sorry, a sentence in the second paragraph of my original mail was wrong. Please replace
"six times as long as serializing 1000 objects containing a single such list" with "six times as long as serializing a single object containing such a list" I apologize for the mistake. -- Sebastian > -----Original Message----- > From: Millies, Sebastian [mailto:[email protected]] > Sent: Wednesday, November 10, 2010 9:17 AM > To: [email protected] > Subject: Serialization of List<DataObject> inefficient > > Hello there, > > [note: this message has two Jpg-images attached] > > I am asking for background about why the serialization of SDO-lists is > so inefficient in Tuscany 1.6. To be precise, I have noticed that > inter-jvm communication between SCA components happens a lot faster > when I do not pass List<DataObject>, but instead wrap the list in an > additional SDO with the list as its only attribute. > > The difference is marked, e.g. serializing a list of 1000 objects 200 > times takes about six times as long as serializing 1000 objects > containing a single such list 200 times: > > testListOfSDO LSIZE:1000 duration D[3626ms] numRuns[200] > testSDOResultObject LSIZE:1000 duration D[634ms] numRuns[200] > > For simplicity of calculation, I repeated the experiment with a list of > 100 objects and just > 1 run, and looked at the performance statistics using Eclipse TPTP. One > notices that > writeExternal() gets called twice for each list element in the first > case, with some > readResolve() calls thrown in for good measure, while it gets called > only once per run in the second case: > > Case 1: clip_image001.jpg > Case 2: clip_image002.jpg > > > Would it make sense to try and improve SDO by having it wrap > List<DataObject> internally before sending it off to another process? > > -- Sebastian
<<attachment: clip_image001.jpg>>
<<attachment: clip_image002.jpg>>
