Are you buffering your naïve streams? I not sure if RMI buffers internally, but 
I suspect it does.  Depending on the size of the objects you are serializing, 
buffering could make a big difference.

-----Original Message-----
From: Tom Hobbs [mailto:tvho...@googlemail.com] 
Sent: Friday, September 17, 2010 7:51 AM
To: river-user@incubator.apache.org
Subject: Re: Jini RMI vs TCP throughput

Hi Silas,

A brief look on the web throws a couple of links which suggest that RMI
should be *slower* that a Socket implementation.

See; http://java.sun.com/developer/technicalArticles/ALT/sockets/

I would suggest that the problem lies with your "(naive) socket
implementation".  As to what the problem could be, I'm afraid that I'm not
an expert in that area - especially without seeing any code.

My personal approach might include;
- Decide that my RMI approach was fast enough and leave it alone
- Use something like Wireshark and test both approaches to see if it's the
transmission or the de/serialisation which is taking the time

Have you considered re-asking this question on something like Stack
Overflow?

Sorry I can't be more help.

Tom


On Fri, Sep 17, 2010 at 12:28 PM, Silas De Munck <silas.demu...@ua.ac.be>wrote:

> Hello,
>
> In the context of a distributed discrete event simulation, I need to be
> able
> to send objects at a high rate between program instances on different
> hosts.
> Initially I implemented this using remote calls to an object instance
> living
> on the other side. This performs fairly well, but because essentially I
> only
> need a one-way stream-connection with asynchronous sending, I thought using
> the RMI mechanism for this was not the best solution. Therefore I added a
> TCP
> implementation using Sockets and ObjectStreams.
>
> Now comparing the RMI and the socket implementation, the results are
> somewhat
> strange. I expected the sockets to perform better because of the reduced
> overhead, but this isn't the case. My (naive) socket implementation only
> reaches about 25% of the througput rate of the RMI implementation.
>
> Does RMI use a different (faster) serialization implementation, compared to
> the
> serialization used with ObjectInput/Output-stream?
> Are there any other differences that could explain the performance
> difference?
>
> Any pointers on where to start investigate this issue would be very much
> appreciated.
>
> Regards,
>
> Silas
>
>
>
>
> --
>
> Silas De Munck
> PhD Student
>
> Computational Modeling and Programming (COMP)
> University of Antwerp
> Middelheimlaan 1
> 2020 Antwerpen, Belgium
> G2.07, Department of Computer Science and Mathematics
>
> e-mail: silas.demu...@ua.ac.be
>

Reply via email to