.Net 4.0 app比64位慢32位(分析和可能的解决方案)(应用程序正在使用NetAdvantage)

Man*_*ion 8 .net performance 64-bit infragistics 32bit-64bit

我们有用VB .NET 4.0/VS2010编写的.NET应用程序,编译时所有项目都设置为AnyCPU设置,用于Debug和Release配置.我们注意到,当这个应用程序在64位环境(在Windows Server 2003 R2和2008 R2上测试)上运行时,应用程序至少需要两倍的时间(绝对值约为25秒),而不是大约6-12在32位环境(Win XP和7)上启动秒.

我应该补充一点,64位系统是功能强大的服务器,绝对比其他测试的32位系统更强大.所有其他应用程序在64位上更快,但不是我们糟糕的应用程序;)(我们确实在不同的时间,在不同的负载下测试应用程序,结果总是几乎相同.)

如上所述,应用程序是使用AnyCPU构建的,它在64位操作系统下运行为64位程序集(通过TaskManager检查).该应用程序本身是一个WinForms应用程序,使用NetAdvantage Forms v10.3并定期查询和写入MS SQL Server 2008.

不同的目标机器都在同一个网络上,因此数据库的路径(相同的数据库用于性能测试)例如是相同的,我认为问题不在于数据库或网络本身.

我注意到的一件事,对我来说似乎很奇怪,当我在MainForm启动期间使用秒表构建不同的"分析步骤"时,InitializeComponent方法在64位上花了两倍长,大约4秒反对1.5在32位.

这是我们在两个系统上部署的相同应用程序,没有不同的配置.

所以我有两个问题:

知道这可能是什么原因吗?

并且:确定"违规"代码段的最佳方法是什么?目前我使用秒表并试图缩小范围.但在我看来,就我们的应用而言,64位机器上的一切都比较慢,所以我不太确定我可以将其分解为具体的陈述.

谢谢大家的帮助,非常感谢...

Man*_*ion 4

事实证明,一旦我们从 AnyCPU 编译切换到专门的 x86,即也在 x64 位平台上作为 x86 运行,我们就回到了“良好的速度”。