我们有一个用VB .NET 4.0 / VS2010编写的.NET应用程序,将所有项目设置为Debug和Release配置下的AnyCPU模式进行编译。我们注意到,当在64位环境(在Windows Server 2003 R2和2008 R2上测试)下运行该应用程序时,启动时间至少是32位环境(Win XP和7)中的两倍以上(绝对时间约为25秒,而不是6-12秒)。我应该补充说明,64位系统是功能强大的服务器,肯定比其他测试的32位系统更强大。所有其他应用程序在64位上都更快,但我们可怜的应用程序不是;)(我们确实在不同时间、负载下测试了应用程序,结果总是差不多。)
如上所述,该应用程序使用AnyCPU构建,并且在64位操作系统下运行为64位程序集(通过TaskManager检查)。该应用程序本身是一个WinForms应用程序,利用NetAdvantage Forms v10.3,并且经常查询和写入MS SQL Server 2008。
不同的目标机器都在同一网络上,因此例如数据库(性能测试使用相同的数据库)的路径是相同的,我认为问题不在于数据库或网络本身。
我注意到的一件奇怪的事情是,在使用秒表在我们的MainForm启动期间构建不同的“分析步骤”时,InitializeComponent方法在64位上需要两倍的时间,约为4秒,而在32位上为1.5秒。
我们在两个系统上部署相同的应用程序,没有不同的配置。
因此,我有两个问题:
有什么想法是什么原因?
以及:确定“有问题”的代码片段的最佳方法是什么?目前我使用秒表并尝试缩小范围。但是就我们的应用程序而言,似乎64位机器上的所有内容都比较慢,所以我不太确定能否将其分解为特定语句。
感谢大家的帮助,非常感谢。。。
如上所述,该应用程序使用AnyCPU构建,并且在64位操作系统下运行为64位程序集(通过TaskManager检查)。该应用程序本身是一个WinForms应用程序,利用NetAdvantage Forms v10.3,并且经常查询和写入MS SQL Server 2008。
不同的目标机器都在同一网络上,因此例如数据库(性能测试使用相同的数据库)的路径是相同的,我认为问题不在于数据库或网络本身。
我注意到的一件奇怪的事情是,在使用秒表在我们的MainForm启动期间构建不同的“分析步骤”时,InitializeComponent方法在64位上需要两倍的时间,约为4秒,而在32位上为1.5秒。
我们在两个系统上部署相同的应用程序,没有不同的配置。
因此,我有两个问题:
有什么想法是什么原因?
以及:确定“有问题”的代码片段的最佳方法是什么?目前我使用秒表并尝试缩小范围。但是就我们的应用程序而言,似乎64位机器上的所有内容都比较慢,所以我不太确定能否将其分解为特定语句。
感谢大家的帮助,非常感谢。。。