C# 对64位服务器上32位应用程序的Com调用速度较慢

C# 对64位服务器上32位应用程序的Com调用速度较慢,c#,performance,com,64-bit,32-bit,C#,Performance,Com,64 Bit,32 Bit,我有一个刚刚迁移到Windows 2008 R2 64位的应用程序。本质上,它是一个C++的.NET 4 WCF应用程序,它对VC6C++中的32位COM应用程序进行动态调用。 当我在Windows7 32位的桌面上运行这个程序时,COM调用要快得多 服务器应该更强大一个数量级(尽管在托管环境中) 有没有什么快速/简单的方法可以让我查清真相?我今天要了解分配给虚拟机的资源,但同时 这是64位呼叫32位COM的东西吗 谢谢大家! 从64位进程运行32位代码非常耗时,因为它涉及Windows on

我有一个刚刚迁移到Windows 2008 R2 64位的应用程序。本质上,它是一个C++的.NET 4 WCF应用程序,它对VC6C++中的32位COM应用程序进行动态调用。 当我在Windows7 32位的桌面上运行这个程序时,COM调用要快得多

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

有没有什么快速/简单的方法可以让我查清真相?我今天要了解分配给虚拟机的资源,但同时

这是64位呼叫32位COM的东西吗


谢谢大家!

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

做一些评测来衡量你的应用在不同情况下的性能

  • 编译到任何CPU,在x64上运行
  • 编译到x64,在x64上运行
  • 编译到x86,在x64上运行
然后做能让你表现最好的事情

但是…


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

解决方案是针对x64平台编译COM应用程序。没有理由使用较新版本的Visual Studio(即Visual C 6在作为独立程序销售时是Visual Studio 6)。缺少太多细节。这是进程外COM服务器吗?它在同一台机器上运行吗?什么是“托管”,它实际上在虚拟机中运行吗?COM+?托管代码是否在任何CPU中运行?这是公寓线程对象吗?