Com在64位服务器上调用32位应用程序的速度很慢

Jon*_*n H 4 c# com performance 64-bit 32-bit

我有一个应用程序,我刚刚迁移到Windows 2008 R2 64位.本质上它是一个C#.NET 4.0 WCF应用程序,它动态调用用VC6 C++编写的32位COM应用程序.

当我在桌面上运行这个Windows 7 32位时,COM调用速度要快得多.

服务器应该是一个更强大的数量级(尽管在HOSTED环境中)

有什么快速/简单的事情我可以检查试图找到它的底部?我今天到期是为了分配给虚拟机的资源,但同时也是如此.

这是一个64位调用32位COM的东西吗?

谢谢!

And*_*lad 5

从64位进程运行32位代码非常耗时,因为它涉及Windows on Windows子系统(WoW).64位代码和32位代码不能在同一进程中运行,这意味着从代码到32位dll的所有调用都必须通过进程和体系结构边界,这涉及一些繁重的数据编组和函数调用编组.

http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/

进行一些分析以衡量应用程序在不同情况下的性能.

  • 编译为Any-CPU,在x64上运行
  • 编译为x64,在x64上运行
  • 编译为x86,在x64上运行

然后做什么给你最大的表现.

然而...

如果您可以访问COM库源代码,那么最好的方法是在x64平台上重新编译它.