Report B 98-13
The single most important performance problem for distributed, object-oriented programs is that remote method invocations take several orders of magnitude longer than local invocations. If objects located on different computing nodes need to invoke each other frequently, performance can thus suffer intolerably. While this problem can be tackled by techniques like object migration and replication, such facilities are difficult to implement and even more difficult to standardize, which is why they do not yet exist in today's mainstream distribution platforms. Many of these platforms therefore resort to a simple, yet effective technique that can also lead to dramatic improvements in performance: passing objects by value. Implemented for example by Java/RMI and also proposed in a draft CORBA standard, this technique allows to create copies of parameter objects at remote sites, which the receiver can access in fast local invocations. In this paper, it is examined in detail when exactly it pays off to pass an object by value, using both empirical and analytical studies. A sound basis for evaluating the trade-off is thus provided, so that the programmer -- or an automatic optimization tool -- can make the right decision in a given scenario.
Get the report here or by anonymous ftp: Server: fubinf.inf.fu-berlin.de File: pub/reports/tr-b-98-13.ps.gz