[omniORB] Performance Question

Georg Huettenegger georg@mondoshawan.unix.cslab.tuwien.ac.at
Fri, 9 Jul 1999 20:09:23 +0200 (CEST)



On Thu, 8 Jul 1999, Georg Huettenegger wrote:

> > In omniORB2, unlike sequence of basetypes, array of basetypes (e.g. char)
> > are marshalled one at a time. Sequence of basetypes are either done in one
> > memcpy or directly sent to the socket depending on the size of data.
> > 
> > There is no inheritance reason why array cannot be made to do the same as
> > sequence. It is just a matter of a few small changes to the IDL ompiler.
> > I just don't feel bothered to do so because in real applications, it is
> > rarely useful to pass around a large array of basetype when sequence of
> > basetype can do the same job and is more flexible.
> 
> I will try the same thing with a sequence but I would in general think
> such a small change given a high performance boost (for maybe only
> very rare cases) should be worth it.

Now I did try also with sequences and got the following result:
from sequence<char,1024> to sequence<char,8192> the time needed was 2,6
times larger for omniorb and from sequence<char,8192> to
sequence<char,65536> it was 5,7 times, that makes for a total of 15.
For VisiBroker the values are: 1,8 times and 6,4 times, making a total of
11,5.

These figures are much better than the ones with arrays but still omniorb
is behind VisiBroker in the local case is this because VisiBroker uses
Shared Memory on Windows NT?
Remote VisiBroker is faster transferring the arrays whild OmniOrb is
faster transferring the sequences.

Best Regards,
 Georg Huettenegger

 > 
> > By the way, to avoid duplication of work, you may want to read similar
> > performance comparisons done by Charles University last year:
> > 
> > http://www.kav.cas.cz/~buble/corba/comp/
> 
> Well actually I am using that benchmark (in a slightly modified form).
> 
> Georg Huettenegger
> 
> > 
> > >>>>> Georg Huettenegger writes:
> > 
> > > I am currently comparing different systems for distributed computing
> > > including VisiBroker/Orbix/OmniOrb.
> > 
> > > I am doing a one server to one client scenario locally on one computer and
> > > over a 10Mbit network.
> > 
> > > I am sending data types from 1-8 byte and arrays with 1024 byte. These
> > > tests show rather good performance for OmniOrb (especially over the
> > > network, locally on Windows NT DCOM is better and partially VisiBroker).
> > 
> > > Recently I added an array (typedef char xx[8192] and typedef char
> > > yy[65536]) to my test and transferred these larger messages (for now just
> > > locally on a Windows NT computer).
> > 
> > > With OmniOrb the increase in the needed time for a call is (from 1024 byte
> > > to 8192): 4.78 and (from 8192 to 65536): 7.47
> > > With VisiBroker I get: 1.68 and 6.18;
> > > With Orbix 2.3c I get: 1.23 and 2.54; (with the Orbix values being
> > > initially higher).
> > 
> > > These values are not yet commented by Iona or Inprise they are just tries
> > > I made. When my comparison is finished I expect to publish some results.
> > 
> > > The source for all systems is the same and I am wondering why OmniOrb does
> > > not keep up its speed when more data is transferred (is the data copied to
> > > often? is the OmniOrb transfer method more likely to be hindered by OS
> > > restrictions?).
> > 
> > 
> > -- 
> > Sai-Lai Lo                                   S.Lo@uk.research.att.com
> > AT&T Laboratories Cambridge           WWW:   http://www.uk.research.att.com 
> > 24a Trumpington Street                Tel:   +44 1223 343000
> > Cambridge CB2 1QA                     Fax:   +44 1223 313542
> > ENGLAND
> > 
> > 
> 
>