我试图执行一些逻辑上的多个应用程序域平行进行。我这样做是因为我的工作与传统的代码是"联合国可更改"和我想要提高性能的通过并行的一些东西。问题是,如果我跑的多个实例,在1域,他们都依赖于一些静态数据的结构和干扰彼此的.

我的执行情况是简单的。我要运行多个实例,我的"ExecutionHarness"类的每一个在其自己的程序域-所以我创造了一类"ExecutionHarnessProxy:MarshalByRefObject"我实例在我的每个应用程序域(自ExecutionHarness不能继承自MarshalByRefObject).然后,我刚刚通过的"ExecutionData[]中的数据"参数"ExecutionHarnessProxy.执行()"方法。这家伙然后叫"ExecutionHarness.执行()",一切都很好。

我的问题现在是,每当我通过我的阵列的数据代理类,它需要直到永远。该ExecutionData类具有[序列化]特性和功能,它的所有工作,但我想知道如果有任何方式的速度。

  1. 它可能速度更快,如果我没有serialize/deserialize自己,在两侧的程序域边界?
  2. 是的所有的这段时间花在做化?还是只是转移化之间数据的应用程序域?
有帮助吗?

解决方案

这是很难知道没有更多的信息,但是从你所描述的,我会怀疑的 ExecutionData 阵列是罪魁祸首。

每次你呼叫一个方法,要求这些数据您将序列数据转域,并有可能退出。如果这一系列大,这可以吃了相当多的处理时间。

它会更好,如果数据能够直接加载在每个程序域,只有通过执行结果回到你的主要域.如果你可以避免传递的阵列数据之间的应用程序域,将可能大大加快这一进程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top