DII/DSI



Hi,

Michael Meeks asked me to share this with the list:

> 	Yes, the perl bindings are a quick hack. The 'right way'TM is to
> use the DSI / DII interface but it is a lot more code. I see no point in
> writing ORBit wrappers for python if the omniorb ones are already writte,
> better and prolly use DII / DSI already :-)

DII/DSI is nice, and users don't need up to date IDL files. But it's *a
lot* slower than stubs and skeletons. Here are some figures for Java
ORBs. (From Orfali and Harkey, Client Server Programming with JAVA and
CORBA, 2nd ed., John Wiley 1998). The test case is this piece of
trivial IDL:

module Counter
{
  interface Count
  { attribute long sum;
    long increment();
  };
}; 

Static remote invocation:                            3.5 msec.
Dynamic remote request construction and invocation: 61.4 msec.
Ditto, construction excluded:                        3.6 msec.

You don't lose much if you do the same operation over and over, but
will you ever do that? The parameters will surely change.

Anyway, users need glade files which match their software versions, so
we can keep their idl files synchronized as well.

I've benched this test case for a number of combinations. These are
all measured with stubs and skeletons made by the IDL compiler.

Local: AMD K6/233 64 MB, Linux 2.2.14 / glibc 2.1.3
remote:  Client Intel P5/133 48 MB, Server AMD K6/233 64 MB
         Both Linux 2.2.14 / glibc 2.1.3, 10 MB/s Ethernet, no other
	 Ethernet nodes.

omniORB 2.8.0 / omniORBpy 
orbit   0.5.1 (0.5.0 client in remote)

Client         Server         Local/Remote Avg. ping  Calls/sec
orbit/C        orbit/C        local        0.24 ms    4150
orbit/C        orbit/C        remote	   1.36 ms    730

orbit/C        omniorb/Python local        2.07 ms    480
orbit/C        omniorb/Python remote       2.65 ms    375

omniorb/Python orbit/C        local        0.69 ms    1450
omniorb/Python orbit/C        remote       1.94 ms    515

omniorb/Python omniorb/Python local        2.23 ms    450
omniorb/Python omniorb/Python remote       3.17 ms    315

For scripting, Python via omniORB is quite fast. It performs better
than Java IDL - the ORB which comes bundled with Java 2.

orbit/C**      Java IDL/java  local        2.2 ms     450
orbit/C**      Java IDL/java  remote*      2.6 ms     380

Java IDL/java  orbit/C**      local        1.24 ms    810
Java IDL/java  orbit/C**      remote*      2.0 ms     500

Java IDL/java  Java IDL/java  local        3.1 ms     320
Java IDL/java  Java IDL/java  remote*      4.3 ms     230

*:   Client P5/133 32 MB, Server AMD K6/233 64 MB
**:  Older orbit version

(I made the Java measurements a while back, and forgot to note which
Java platform was used, JIT or not, etc. sorry! Anyway, it's in line
with what Orfali and Harkey's book makes you expect.)

Regards

Jon Kåre



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]