我有一个应用程序刚刚迁移到 Windows 2008 R2 64 位。本质上,它是一个 C# .NET 4.0 WCF 应用程序,可以动态调用用 VC6 C++ 编写的 32 位 COM 应用程序。
当我在 Windows 7 32 位桌面上运行它时,COM 调用速度要快得多。
服务器应该更强大一个数量级(尽管在托管环境中)
是否有任何快速/简单的事情我可以检查以尝试弄清问题的根源?我今天要查看分配给虚拟机的资源,但与此同时..
这是一个 64 位调用 32 位 COM 的东西吗?
谢谢!
最佳答案
从 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/
进行一些分析以衡量您的应用在不同情况下的性能。
- 编译到任何 CPU,在 x64 上运行
- 编译为 x64,在 x64 上运行
- 编译为 x86,在 x64 上运行
然后做能给你带来最大性能的事情。
但是……
如果您可以访问 COM 库源代码,最好的办法是在 x64 平台上重新编译它。
关于c# - Com 调用 64 位服务器上的 32 位应用程序很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110195/