As we are interested in using CORBA for gluing components on the same machine as well, we posed ourselves the question of how the ORB performs when bypassing the network protocol stack. We modified the core of TAO so that we were able to have communication based on Unix named pipes. Their usage is similar to that of sockets, which spared us from making major modifications to the ORB core. In figure 27 we see a performance improvement when using an IPC mechanism other than TCP with sockets. However, the difference between communication using an ORB and direct use of the pipe mechanism is similar to the difference between raw sockets and communication with the IIOP protocol in the original ORB. We also tried to optimise the usage of pipes in the ORB core by avoiding opening and closing the communication channel each time an invocation is made. In fact, once two processes decide to work together we keep the channel open until the reference to the ORB is set free. In doing so, we gain performance for small messages (up to 1 KBytes). From 245 calls/second we can go up to 365 calls/second which represents a slight improvement. It is worth noting that the performance obtained from unoptimised communication over pipes is exactly the same as measured with sockets. Thus, we do not gain anything for small messages when changing the transport layer. This stems from the fact that the management overhead within the ORB architecture is large and is even more revealed when going to a faster transport layer.
The number of messages that could be sent per second using pipes directly was 3660. This was three times more than with sockets. We can see a direct comparison between usage of sockets and pipes for the ORB core in figure 28. The scale on the x-axis is logarithmic in order to show the difference for small messages in greater detail.