我在Windows .net双核上运行了一个x86 3.5应用程序。我现在已经在windows 7 x64上安装了这个应用程序,该应用程序具有超线程的四核。该应用程序是一个gui,它通过WCF与windows服务进行通信,windows服务通过Linq2Sql与R2通信。我们还使用温莎城堡进行依赖注入/IoC
XP环境中的某个Linq2Sql语句大约需要1,5-2秒.在windows 7中,这种状态大约需要5-7秒。我已经运行了sql分析器和资源监视器,似乎应用程序等待了大约5秒,然后启动实际的sql-查询。因此,延迟似乎发生在我的数据文本下面和数据库之前。
我尝试了以下几点:
将连接字符串更改为sql authentication
H 117
作为管理H 218f 219
运行)
我的理论是,有东西在计时,但是什么?!?
发布于 2011-11-03 11:45:10
当将目标平台设置为x86而不是AnyCPU时,程序的行为与预期相同。因此,问题似乎是Linq2Sql和x64并没有真正合作。我不知道我们能不能把它当成窃听器,但它的行为无论如何都不好。
发布于 2011-09-20 13:55:51
我认为您将不得不慢慢地添加您的代码,以找到问题-分而治之。
如果花费时间的是对数据库的实际请求,那么这实际上与Win 7 vs Win XP上的应用程序无关。当直接针对数据库启动该查询时,该查询的速度有多快?如果速度快,就往上移动呼叫堆栈.
Windows服务有多快?你能向它提出一个请求,看看它有多快吗?
WCF层有多快?你能直接击中它并且看到它很慢吗?那你就找到了罪魁祸首。
接下来,在你的UI上--如果你制作一个小测试应用程序来练习应用程序的底部,它会慢吗?如果没有,继续往上走。
最后,可以通过从顶部到底部添加日志语句来轻松地完成其中的一些任务,因此可以像@Jan建议的那样隔离这个问题。
https://stackoverflow.com/questions/7485819
复制相似问题