有没有办法减少与进程COM调用相关的开销?

时间:2009-10-19 08:17:21

标签: windows com marshalling com-interop out-of-process

我们的程序使用一个out-proc COM服务器,并在其接口上进行数千次调用。这需要非常长的时间 - 就像一分钟约50k的电话。 COM组件供应商说,这些调用本身非常快,问题在于与out-proc调用相关的开销。

在这种情况下,有什么可以调整以减少开销吗?

2 个答案:

答案 0 :(得分:2)

寻找减少通话次数的方法。 例如,如果接口允许,您可以考虑替换代码,如:

for a in c..d { array[a]=obj.get(a) }

使用:

obj.getArray(array)

答案 1 :(得分:2)

我真的不认为没有供应商的帮助就可以做很多事情。因为就其本质而言,进程外com对象需要比进程内对象更多的编组等。

如果您可以让供应商帮忙,有两种可能的选择。

  1. 请他们为您提供进程内版本(dll),然后您可以在COM +中托管并生成多个实例(如果适用)并且可以提供帮助。
  2. 按照BAsilevs的建议行事并要求他们更新api,以便减少通话次数,从而减少流量。
  3. 保存您正在使用的流量类型的主要原因是COM +,但这不能用于进程外COM对象。