[Mono-bugs] [Bug 79074][Wis] Changed - Mono places remoting calls for System.Object method

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Mon Aug 14 20:14:20 EDT 2006


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by lluis at ximian.com.

http://bugzilla.ximian.com/show_bug.cgi?id=79074

--- shadow/79074	2006-08-14 18:27:38.000000000 -0400
+++ shadow/79074.tmp.21444	2006-08-14 20:14:20.000000000 -0400
@@ -2,13 +2,13 @@
 Product: Mono: Runtime
 Version: 1.1
 OS: All
 OS Details: 
 Status: NEW   
 Resolution: 
-Severity: 
+Severity: Unknown
 Priority: Wishlist
 Component: remoting
 AssignedTo: lluis at ximian.com                            
 ReportedBy: brian at fluggo.com               
 QAContact: mono-bugs at ximian.com
 TargetMilestone: ---
@@ -71,6 +71,49 @@
 scenario. In the above scenario, the framework can return false without
 placing the call.
 
 Additional Information:
 This bug could be a source of the performance problems that inspired the
 fast-xappdomain paths.
+
+------- Additional Comments From lluis at ximian.com  2006-08-14 20:14 -------
+> Calls to Equals across domains is substantially slower than 
+> calls to a local (non-MarshalByRefObject) object.
+
+This is also true for MS .NET, just try to run the above test case.
+
+> Calls to Equals, when it's not overridden, should be just as
+> fast in either scenario. In the above scenario, the framework
+> can return false without placing the call.
+
+It's not so simple. Some special checks would need to be added when
+creating the proxy and the method wrappers. The method call will never
+be as fast as a normal call since you don't have a real object in the
+calling domain, but a proxy. 
+
+At the end, what matters is performance. If you compare the performace
+you'll see that we aren't doing bad. Mono is much faster than MS.NET
+1.1 when calling Equals(null) through the cross app domain, and a bit
+slower that MS.NET 2.0.
+
+> This bug could be a source of the performance problems
+> that inspired the fast-xappdomain paths.
+
+Nope. I implemented the fast cross appdomain path to optimize the
+following cases:
+1) When there are no custom remoting sinks registered, we can avoid
+the remoting sink chain. It means avoid converting the call into an
+IMessage object, go through the sinks, and convert the IMessage into a
+call in the remote domain.
+2) When all the parameters of the call are primitive types. In this
+case the xdomain fast path can make a value copy of the parameters and
+there is no need to use the binary serializer.
+
+For example, in the case of XSP the most critical remote call is
+ProcessRequest, which happens to satisfy both conditions, so those
+calls take full advantage of the complete xdomain fast path.
+
+However, if the target assembly in the remote domain has been loaded
+from a different location (which may happen after aplying the patch
+for #76757), the fast path can't be used because types can't be
+shared, so it has to go through the complete remoting sink.
+


More information about the mono-bugs mailing list