我有一个案例,我必须在AppDomains中使用一些类。为了使它们工作,我让它们继承自MarshalByRefObject。这些类的所有内容都按预期工作。但是这些类在我们的系统中使用,并且99%的时间这些类将仅在一个AppDomain中使用。在单个AppDomain中使用这些类时,是否存在从MarshalByRefObject继承的负面影响?
谢谢,
跳过
答案 0 :(得分:9)
当然,MRBO对抖动产生的代码有很大的影响。对类字段的任何访问都会导致调用CLR中实现的辅助方法,而不是访问该字段的单个CPU指令。
这是不可避免的,只有CLR知道对象实际上是代理还是实际交易。并且代理需要使用远程调用来模拟字段。如果它不是代理,那么你仍然需要支付助手调用开销,这很容易放慢。
这是否真的对你的代码有影响是不可能预测的,我们在这里讨论的是纳秒。如果减速变得明显,你只能做些什么。