C#4.0动态Office互操作性能

bil*_*llb 6 dynamic visual-studio-2010 office-interop

我采用了在Visual Studio 2008中开发的应用程序,并通过COM Interop使用了各种Office库.我使用动态关键字和Visual Studio 2010开始了一些概念开发的证明.我发现执行相同的任务使用动态比使用"旧"方式慢大约5-10倍.有没有其他人经历过这种性能下降?这是已知还是我应该找到报告方式?

Mik*_*oud 1

是的,该关键字存在已知的性能影响dynamic。原因是它必须将值装箱到类型中object,然后使用 DLR(一次性)对其进行编译和评估。与已知类型相比,这将在处理器上花费更多的时间。您可以查看此问题的已接受答案以获得更详细的描述。

最后,在您的情况下,情况会更糟,因为它已经是一个 COM 对象,因此在 COM 开销之上对该对象进行装箱和拆箱将会被夸大。