[omniORB] Performance of Sequences

David Sansom david.sansom@db.com
Mon, 21 Aug 2000 13:04:17 +0000


Hi,

I have a question about the efficiency of Sequences as a method of transfering large amounts of variable-length data across the network.

I'm  using an app that I wrote some time ago which executes an sql command on a database and returns the result as a Sequence to the caller. Originally, I was using Sequence<Any> to return the data, but as we started to pull back larger result sets from the database we noticed performance dropping off. This prompted us to do some profiling to determine the bottleneck. It appears that the hold-up is caused by the marshalling and transmission of the sequence.

In an attempt to isolate the problem further, I replaced Sequence<Any> with Sequence<char> and simply transmitted a byte buffer with a format known to both client and server. This didn't really improve the performance at all.

As an example, the marshalling and transmission of 100Kbytes using Sequence<char> on our network takes around 3 seconds. However with the same client/server/network configuration, I can FTP a 500K file in 0.4 seconds !

FTP gives something of a benchmark for the TCP/IP protocol, so I wouldn't expect an implementation using standard sockets to be wildly different (depending on the send/recv buffer size etc).

Maybe I'm doing something wrong, but I am now tempted to revert to my dog-eared copy of 'UNIX Network Programming' by Stevens and wave a sad farewell to Corba (!)

David Sansom


--

This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.