我们有用 VB .NET 4.0 / VS2010 编写的 .NET 应用程序,编译时所有项目都设置为 AnyCPU 设置,用于调试和发布配置。我们注意到,当此应用程序在 64 位环境(在 Windows Server 2003 R2 和 2008 R2 上测试)上运行时,应用程序所需的时间至少是 6-12 秒的两倍(绝对值约为 25 秒)在 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 位机器上的一切都比较慢,所以我不太确定是否可以将其分解为特定的语句。
谢谢大家的帮助,非常感谢...